Android ApiDemos详解之App_Activity_IntentActivityFlags(7)

npapi插件浏览器调插件函数Demo npapi 插件 js页面调用插件函数Demo 立即下载

首先,进入到IntentActivityFlags后的界面如下图所示:


通过布局文件可以知道该例子布局很简单:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:orientation="vertical"android:padding="4dip"
       android:gravity="center_horizontal"
       android:layout_width="match_parent"android:layout_height="match_parent">
    <TextView
       android:layout_width="match_parent"android:layout_height="wrap_content"
       android:layout_weight="0"
       android:paddingBottom="4dip"
       android:text="@string/intent_activity_flags"/>
    <Button android:id="@+id/flag_activity_clear_task"
       android:layout_width="wrap_content"android:layout_height="wrap_content"
       android:text="@string/flag_activity_clear_task">
        <requestFocus />
    </Button>
    <Button android:id="@+id/flag_activity_clear_task_pi"
       android:layout_width="wrap_content"android:layout_height="wrap_content"
       android:text="@string/flag_activity_clear_task_pi">
        <requestFocus />
    </Button>
</LinearLayout>


整个布局容器是线性布局,各个元素在其中以垂直,水平居中的方式进行排布。

功能为:

点击第一个”FLAG_ACTIVITY_CLEAR_TASK”的按钮,程序界面会跳转到Views->Lists示例的界面,如下图。


点击第二个”FLAG_ACTIVITY_CLEAR_TASK(PI)”的按钮,程序界面依然会跳转到Views->Lists示例的界面,同上图。

如果大家多多观察会发现,在我们点击两个按钮中任意一个后,都会跳转到ApiDemos->Views->Lists的示例中,然后点击“返回”会回到ApiDemos->Views,再点击“返回”会回到最初进入ApiDemos的列表界面。

为什么两个按钮点击后实现的功能一样呢,它们在点击后的响应事件处理中有什么不同吗?我们先从一个主要的函数代码来看:

private Intent[] buildIntentsToViewsLists() {
        // We are going to rebuild our task with a new back stack.  This will
        // be done by launching an array of Intents, representing the new
        // back stack to be created, with the first entry holding the root
        // and requesting to reset the back stack.
        Intent[] intents = new Intent[3];
 
        // First: root activity of ApiDemos.
        // This is a convenient way to make the proper Intent to launch and
        // reset an application's task.
        intents[0] = Intent.makeRestartActivityTask(new ComponentName(this,
               com.example.android.apis.ApiDemos.class));
 
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.setClass(IntentActivityFlags.this,com.example.android.apis.ApiDemos.class);
        intent.putExtra("com.example.android.apis.Path", "Views");
        intents[1] = intent;
 
        intent = new Intent(Intent.ACTION_MAIN);
        intent.setClass(IntentActivityFlags.this,com.example.android.apis.ApiDemos.class);
        intent.putExtra("com.example.android.apis.Path", "Views/Lists");
 
        intents[2] = intent;
        return intents;
}


通过函数中的注释我们可以知道,这个函数的作用是通过启动一个Intents Array来重建一个“返回栈”,本例中的Intent[]有三个元素。

Intent[0]是通过

makeRestartActivityTask(new ComponentName(this,
               com.example.android.apis.ApiDemos.class));

方法得到的,通过官方文档可以知道该方法返回一个Intent,用以重建一个Activity Task并保持为根(root)状态。也就是说,com.example.android.apis.ApiDemos.class这个Activity在启动后将会作为这一个Activity Task的入口Activity。

      Intent[1]和Intent[2]均是通过setClass()来指明具体的意图,并向分别向各自键为:"com.example.android.apis.Path"的变量中存入"Views "和"Views/Lists"两个值,用以指示ApiDemos获取相应的内容来填充其List列表。

      主要函数看完了再分别看看两个按钮的点击事件的实现:

      第一个按钮“FLAG_ACTIVITY_CLEAR_TASK”点击后执行如下代码: startActivities(buildIntentsToViewsLists());

我们经常用到的是startActivity(Intent),而startActivities(Intent[])的作用与之完全相同,无非就是将Intent[]中的三个Intent所指向的跳转目标Activity从后至前依次添加到当前Activity栈中,如果大家在点击完按钮后用“Back”键返回,会发现返回的顺序和Intent[]中的顺序从后至前一致。

      第二个按钮“FLAG_ACTIVITY_CLEAR_TASK(PI)”作用和第一个按钮实现的功能相同,只是运用了PendingIntent,它的功能实际上是事先定义好一个Intent,然后在满足条件的时候启动(即使当前Context销毁,外部也可以从初始化PendingIntent中的Context启动这一Intent)。

try {
                pi.send();
            } catch (CanceledException e) {
                Log.w("IntentActivityFlags", "Failed sending PendingIntent", e);
            }
        }


pi.send()就是实现了在满足条件的时刻触发PendingIntent中的Intent[]。

本期到此结束

jQuery demos jQuery demos jQuery demos jQuery demos 立即下载

相关推荐

曲线绘图Demo

利用重用机制,曲线绘图,UIScrollView,UICollectionView,TableView的相互嵌套,解决大数据绘图界面卡顿的问题

关于 Intent.makeRestartActivityTask

一般来讲,点击一个notification后,都会打开一个Activity做为对点击事件的响应,这个Activity是之前在PendingIntent中设置好的。 经常玩Android手机的应该都有印象,在日历应用中,你新建一个提醒,当提醒通知收到后,你点击通知,会进入提醒的内容页面,如果这个时候按back键,会直接退出应用。 但是在Gmail的应用中,如果有一封新邮件到来,那么点击通

xiaodong liang 1873

mathmap数学软件

利用此款软件可制作出德罗斯特效应的图片(^-^).详情请百度德罗斯特(^-^)

Android app主动杀死进程并重启

这里的问题原因就是当settings里关闭了权限之后,安卓系统会主动关闭app进程,使得重新打开app时,之前保存的app的activity页面是被异常关闭的,会触发 onCreate方法的参数savedInstanceState: Bundle不为空。最近出现一个bug,这个bug还是很常见的很容易实现,在设计代码的时候还是需要注意的,就是在app授权location定位权限之后,将app放在后台,在设置里对app的权限关闭操作,再从后台打开app,app会crash。

chenhuakang的博客 3426

Android APIdemos

摄像头 NFC 短信 电话 即时通讯 gps 等等常用功能

大白话讲解Numpy中什么是一维、二维、三维数组,以及5种创建方式

NumPy中提供了多种创建数组的方式,其中最基本的方式就是通过array()函数创建数组在使用该函数时直接传入列表或元组即可。 通过array()函数分别创建一维数组、二维组和三维数组,那么什么是维度呢?一维、二维、三维有什么区别? 1、什么是维度? 维度可以理解为描述数据的一种 “方向” 或者 “层次”。在数组中,维度的数量决定了我们需要用多少个索引来访问一个元素 2、一维、二维、三维的区别? (1)一维:一维数组就像是一条直线上排列的一组数据,例如: a = np.array([1, 2

1365

intent java_Java Intent.makeRestartActivityTask方法代码示例

import android.content.Intent; //导入方法依赖的package包/类private static void updateAppWidgetLayout(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {Filter filter = getFilter(context, app...

weixin_30603711的博客 270

一文吃透 BMS:动力电池与储能共用的电池管控全架构详解

BMS作为电池系统的核心控制器,其技术深度和系统复杂性不容小觑。动力电池与储能系统虽然应用场景不同,但在核心架构上共享大量基础技术。成功的BMS设计需要在精度、可靠性、成本、功耗之间找到最佳平衡点。未来,随着电池技术的进步和智能化需求的提升,BMS将向着更高集成度、更强智能化、更优经济性的方向发展。无论是汽车工程师还是储能系统设计师,深入理解BMS的全栈架构,掌握其核心技术原理,都将是应对未来能源存储挑战的关键能力。核心要点回顾BMS采用分层分布式架构,硬件是基础,算法是灵魂。

小帽子的博客 341

Android 用户界面---状态栏通知(二)

响应通知 围绕通知如何跟应用程序的UI流进行交互是用户体验的核心部分。你必须正确的实现以便在应用程序中提供一直的用户体验。 由日历应用提供的两种典型的通知的例子,一个是能够对即将发生的事件发出一个通知,另一个是Email应用能够在收到新的消息时发出通知。它们代表了两种推荐的处理通知的方式:既可以启动一个跟主应用程序分离的Activity,也可以启动一个完整的用于显示对应通知的新的应用程序实例。...

weixin_33874713的博客 155

基-2 16点fft的verilog实现

本文是采用输入8位数据,输出8位数据的16点fft实现,旋转因子采用8位rom存储,分为cos和sin2个rom存储;输入数据以及每一级的输出数据采用8位的ram进行存储,分为实部和虚部进行存储。采用顺序输入,那么输出则为倒序。生成rom,可先在matlab中,计算出cos和sin的值,然后写入coe文件,再由ip核生成,具体过程自行百度,懒得百度的话,可以发我的邮箱来获得具体的程序。因为本文采用...

juniorofMFC的博客 9992

Python调用Google Trends官方数据接口实战指南

Google Trends作为全球最权威的搜索热度分析工具,其数据本质是公开、结构化、可编程访问的时序指标,而非需爬取的网页内容。其底层基于标准HTTP协议与JSON API交互,核心原理在于复现用户浏览器行为——通过/explore接口获取token,再凭token请求/widgetdata/multiline等端点获取归一化(0-100)时间序列数据。该技术路径规避了Selenium渲染依赖与非官方库的脆弱性,具备高稳定性、易调试、可监控等工程优势,广泛应用于竞品监测、内容选题验证、地域营销策略制定等业

weixin_29789925的博客 421

开发中使用到的Intent知识扩展

一. 前期基础知识储备 数据序列化在Android开发中占据举足轻重的地位,无论进程间通信,本地数据化存储,网络数据传输等,都离不开序列化的支持。针对不同场景选择正确的序列化方案,对应用的性能有着极大的影响,而Intent对象就是序列化数据的载体之一。 二.上代码,具体实现 下面是一些和Intent有关的知识汇总: 1)makeMainActivity()| make...

Chin_Style的博客 1145

外设高级定时器互补输出带死区控制实验

外设高级定时器互补输出带死区控制实验

ff_juju的博客 1652

[Android Samples视频系列之ApiDemos] App-Activity-IntentActivityFlags

[Android Samples视频系列之ApiDemos] App-Activity-IntentActivityFlags 1.前言 该Demo的分析参考了mapdigit的关于Api Demos的文章,我在他的基础上更进一步分析了相关知识点。 2.Demo效果 3.Demo分析 首先,进入到IntentActivityFlag...

weixin_34395205的博客 107

QT如何使用CTK插件搭建应用程序框架?

CTK框架,QT框架,插件系统

cs821984831的博客 735

BART non-Cartesian 重建:并行成像 压缩感知

本文主要使用并行成像和压缩感知方法实现non-Cartesian MRI 数据的重建。

张哥频道:电生理信号和磁共振成像 1182

Android 进程重启问题 android.os.Process.killProcess()

全局任务栈内有超过一个以上的 Activity 实例。此时,调用 `Process.killProcess(Process.myPid())`后,系统表现,类似“意外关闭”会重建关闭页面的前一个 Activity

打渔还是晒网 —— stone 1647

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

[android]如何使用 IntentCompat.makeRestartActivityTask()?

                 我想实现一个按钮,将会导致我的应用程序会回到第一项活动和行事,如果它 (几乎) 重新启动都结束。此代码 Intent newIntent = new Intent(currentActivity.getApplicationContext(), StartActivity.class); newIntent.

dongsheng186的专栏 1460

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

安卓ApiDemos学习 app/Activity/ReceiveResult

此示例演示了activity间,利用ActivityResult机制进行数据交互 画面ReceiveResult中,按下按钮后,调用如下代码启动画面SendResult Intent intent = new Intent(ReceiveResult.this, SendResult.class); startActivityForR

智慧改变命运 2512

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

百度云推送push的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 这是我第一个使用的推送服务,百度云推送 废话不多说,开始上内容 功能实现过程: 1. 到百度云推送官网下载最新版本的SDK http://push.baidu.com/sdk/push_client_sdk_for_android   2. 将SDK下的jar包和so文件拉到项目中libs目录下   3. 添加

budweiser 6128

Android Notification详解——响应notification事件

上一篇讲了如何创建并显示一个notification,这一篇就总结下点击notification后,程序应该如何响应。   一般来讲,点击一个notification后,都会打开一个Activity做为对点击事件的响应,这个Activity是之前在PendingIntent中设置好的。 经常玩Android手机的应该都有印象,在日历应用中,你新建一个提醒,当提醒通知收到后,你点击通知,会进入...

hanyi的空间 490

Notification点击跳转到消息界面返回到主界面Bug解决

需求: 点击消息通知栏(Notification),跳转到APP的消息界面(MsgActivity),在MsgActivity做一系列操作之后,用户点击返回键,返回到MainActivity 实现: 采用PendingIntent.getActivity()方法来设置点击之后需要跳转到的Activity。 结果: 点击Notication------>跳转到MsgActivity

Townkoim的专栏 5514
上一篇: Android ApiDemos详解之App_Activity_Hello World(6)
下一篇: Android ApiDemos详解之App_Activity_Intents(8)
HeraclesApollo
博客等级 码龄17年 18粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值