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

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

1.前言

该Demo的分析参考了mapdigit的关于Api Demos的文章,我在他的基础上更进一步分析了相关知识点。

2.Demo效果


3.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);  
            }  
        }  

4.视频讲解:http://www.eyeandroid.com/thread-9802-1-1.html


5.这个Demo我们学会了:

1. Android Intent和PendingIntent的区别详细分析

http://www.eyeandroid.com/thread-1419-1-1.html

2. PendingIntent的重复问题,当新建的PendingIntent匹配上一个已经存在的PendingIntent时可能不会创建新的

http://www.eyeandroid.com/thread-9784-1-1.html

3. Reference:PendingIntent翻译

http://www.eyeandroid.com/thread-9785-1-1.html


android api demos 找了好久的api demos,现在的androidstudio都不能下载了。谷歌的东西还是很珍贵的对于安卓学习,所以在此上传,共享资源。 立即下载

相关推荐

曲线绘图Demo

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

关于 Intent.makeRestartActivityTask

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

xiaodong liang 1873

DEMO包

这是小I机器人的Java SDK包和Demo

Android app主动杀死进程并重启

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

chenhuakang的博客 3426

jQuery demos

jQuery demos jQuery demos jQuery demos

ESP32专用E220LoRa库:EBYTE LoRa模块驱动与点对点透传实现

LoRa是一种基于扩频技术的低功耗远距离无线通信协议,广泛应用于物联网终端设备间的数据传输。其核心原理在于通过线性调频(Chirp)信号提升接收灵敏度与抗干扰能力,从而在Sub-GHz频段实现数公里级视距通信。该技术具备高链路预算、强穿透性与多节点并发接入能力,显著降低广域传感网络的部署成本与功耗门槛。典型应用场景包括农业环境监测、工业设备远程诊断、智能表计数据回传等对可靠性与简易集成要求严苛的嵌入式系统。本文聚焦EBYTE E220-400T22D模块在ESP32平台上的工程化落地,深入解析硬件引脚时序约

weixin_36064575的博客 556

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

VINS技术路线与代码详解

VINS技术路线 写在前面:本文整和自己的思路,希望对学习VINS或者VIO的同学有所帮助,如果你觉得文章写的对你的理解有一点帮助,可以推荐给周围的小伙伴们,当然,如果你有任何问题想要交流,欢迎随时探讨。话不多说,下面上正文。 VINS代码地址:https://github.com/HKUST-Aerial-Robotics/VINS-Mono 参考文档:1.VINS-Mono A R...

wangshuailpp的博客 7万+

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

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

weixin_33874713的博客 155

深入Google DroidGuard:剖析其自定义虚拟机如何守护Android应用安全(附pcbc文件机制解析)

本文深入解析Google DroidGuard自定义虚拟机如何通过独特的架构设计和加密机制保护Android应用安全。DroidGuard采用动态密钥派生、全加密执行环境和pcbc文件机制,有效防御逆向工程和自动化攻击,为移动安全提供新思路。

weixin_34254464的博客 307

操作系统知识点汇总(王道)

操作系统不论是就业还是升学都是核心的一门课程,对于大部分工科更是必修课程。本文章是对《王道操作系统》所有知识点的总结笔记,以供大家学习以及在备考期间复习使用。让我们一起把知识往脑子里旋好吗!!!......

S mile0804的博客 5万+

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

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

Chin_Style的博客 1145

保姆级教程:用GD32F470的EXMC Bank0 Region0与FPGA实现16位并行通信(附完整代码)

本文详细介绍了如何利用GD32F470的EXMC Bank0 Region0与FPGA实现16位并行通信,涵盖硬件连接、寄存器配置、时序优化及FPGA接口设计等关键步骤。通过实例代码和调试技巧,帮助开发者快速掌握高效数据交互技术,提升嵌入式系统设计能力。

weixin_26918763的博客 226

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

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

打渔还是晒网 —— stone 1648

AUTOSAE软件配置-达芬奇( DaVinci Configurator)从新建工程开始

方法1,直接使用案例工程,一般SIP包会有一个创建好的案例工程,在这样的路径YOUR_SIP_DIR/Applications/SipAddon/StartApplication下面直接打开这个*.dpa文件即可看到已经预先做好的工程:但是,这个也不是全的,也不一定完全正确,至少MCAL是没有配置好的(MCAL是IC厂商提供的,并不归属SIP包的一部分)。这样就需要你自己去配置你想要的模块,修改里面的错误。

m0_49148264的博客 2948

Claude Code 完整详解(Anthropic 官方 AI 编程 Agent)

它是运行在终端(Terminal)的 AI 编程代理,不是普通 IDE 插件;你用自然语言发指令,它自主规划步骤、读写项目文件、执行系统命令、排查 Bug、处理 Git 工作流,是能真正动手干活的 AI 程序员。真正的AI 开发代理人,不止写代码,还能执行开发全流程超长全局上下文,大型项目理解碾压传统补全工具终端原生 + IDE 双接入,开发流程无割裂代码质量、可读性、工程规范性普遍偏高权限安全机制完善,修改前预览、可随时中断回滚。

wange6906的博客 3157

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

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

dongsheng186的专栏 1460

OpenClaw界面操作手册:命令行与交互模式的正确打开方式

"test": {"description": "运行项目的测试套件","prompt": "请执行项目的测试命令,并分析测试结果。如果有失败的测试,请提供修复建议。},"lint": {"description": "运行代码检查","prompt": "请运行代码检查工具,分析所有警告和错误,并提供修复建议。},"doc": {"description": "为当前文件生成文档","prompt": "请为当前打开的文件生成完整的API文档,包括函数说明、参数描述、返回值类型和使用示例。

gaoxiang_120的专栏 3148

安卓ApiDemos学习 app/Activity/ReceiveResult

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

智慧改变命运 2514

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

百度云推送push的使用

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

budweiser 6128

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Android Notification详解——响应notification事件

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

hanyi的空间 490

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Android ApiDemos详解之App_Activity_IntentActivityFlags(7)

首先,进入到IntentActivityFlags后的界面如下图所示: 通过布局文件可以知道该例子布局很简单: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"android:padding="4dip"

魏庆劼的专栏 2768

Android ApiDemos详解之App/Activity/Animation(3)

Android_ApiDemos详解之App->Activity->Animation   本篇是ApidDemos详解系列文章的第一篇,该系列文章的发布顺序很简单,就是按照ApiDemos中从列表由上至下的顺序,如下所示: 1.         App->Activity 2.         App->Alarm 3.         App->DeviceAdmin 4.

魏庆劼的专栏 3078
上一篇: 【Android每日一讲】2012.10.30 自制计算器 - 多按钮的整合应用
下一篇: 【Android每日一讲】2012.10.31 关于(about)程序信息 - Menu功能菜单程序设计
cofftech
博客等级 码龄16年 46粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值