activity启动模式

Activity启动模式

梦想的初衷 提交于 2019-12-02 06:23:39
文章目录 Activity启动模式 Activity启动模式--AndroidManifest.xml 动态设置标志位启动 Activity管理过程 AMS Activity启动流程图 Activity启动模式 Activity启动模式–AndroidManifest.xml 默认模式(Strandard) 每次启动都会创建一个新的Activity。 2.栈顶复用(SingleTop) 如果启动的Activity栈顶已经存在,就不用创建。如果没有或者不在栈顶,就创建一个新的。 【不存在】 启动AActivity [存在] 启动BActivity 栈内复用(SingleTask) 启动AActivity,如果栈内已存在AActivity,会弹出AActivity之上所有的Activity。 单独的任务栈中(SingleInstance) 启动的Activity会在单独的任务栈中创建 动态设置标志位启动 FLAG_ACTIVITY_NEW_TASK 跟launchMode中的singleTask一样。 FLAG_ACTIVITY_SINGLE_TOP 跟launchMode中的singleTop一样。 FLAG_ACTIVITY_CLEAR_TOP 跟launchMode中的singleTask一样。 动态设置的启动模式要比Manifest中设置的优先级要高。 Activity管理过程

Android 中的 Activity Launch Mode 详解

扶醉桌前 提交于 2019-12-01 23:44:30
Android 中的 Activity Launch Mode 详解 同步滚动: 关 Android 中的 Activity 有几种比较重要的启动模式,Standard\SingleTop\SingleTask\SingleInstance , 每一种启动模式有不同的使用场景, 网上也有许多分析这个的文章, 这里我以 Demo 的模式, 从 Activity 栈的角度来展示不同启动模式下的 Activity 的行为. Activity 栈是一个先进后出的数据结构, 各位可以关注在每一步操作之后, 栈内容那一栏 , 可以更好地帮助理解不同的启动模式. Demo 比较简单, 我也放到了 Github 上 , https://github.com/xiangjiana/emmmmm , 有兴趣的可以自己跑一下 , 看看结果 , 只需要修改 StandardActivity 里面的跳转 Activity 就可以了. Standard 标准模式 android:launchMode="standard"   最基本的模式,每次启动都会创建一个新的 Activity // 1. 启动 Activity MainActivity //栈内容 com.example.launchmodetest/.MainActivity -------------------------------------

快速连续点击两次出现相同内容的解决方法

社会主义新天地 提交于 2019-12-01 16:51:42
解决方法:将启动页的android:launchMode设置成singleTask后,从启动页打开一个activity。即在AndroidManifest.xml文件找到相应的activity,加入android:launchMode="singleTask",程序就只会创建唯一一个启动页了。 多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。 这需要为Activity配置特定的加载模式,而不是使用默认的加载模式。 加载模式分类及在哪里配置 Activity有四种加载模式: standard singleTop singleTask singleInstance 设置的位置在AndroidManifest.xml文件中activity元素的android:launchMode属性: <activity android:name="ActB"android:launchMode="singleTask"></activity> 也可以在Eclipse adt 中图形界面中编辑: 区分Activity的加载模式,通过示例一目了然。这里编写了一个Activity A(ActA)和Activity B(ActB)循环跳转的例子

【转】Activity的Launch mode详解 singleTask正解

烂漫一生 提交于 2019-12-01 16:47:27
转自http://hi.baidu.com/amauri3389/blog/item/a54475c2a4b2f040b219a86a.html 参见:http://mypyg.iteye.com/blog/919643 http://marshal.easymorse.com/archives/2950 http://blog.csdn.net/infsafe/article/details/5666964 Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance。以下逐一举例说明他们的区别: standard:Activity的默认加载方法,即使某个Activity在Task栈中已经存在,另一个activity通过Intent跳转到该activity,同样会新创建一个实例压入栈中。例如:现在栈的情况为:A B C D,在D这个Activity中通过Intent跳转到D,那么现在的栈情况为: A B C D D 。此时如果栈顶的D通过Intent跳转到B,则栈情况为:A B C D D B。此时如果依次按返回键,D D C B A将会依次弹出栈而显示在界面上。 singleTop:如果某个Activity的Launch mode设置成singleTop,那么当该Activity位于栈顶的时候

Android SingleTask 探究

筅森魡賤 提交于 2019-12-01 16:29:26
Android 4种启动模式来说,用法说明此处不再提及主要介绍SingleTop,SingleTask相关的问题 说明 先分析 官方文档 中的一段话: As shown in the table above, standard is the default mode and is appropriate for most types of activities. SingleTop is also a common and useful launch mode for many types of activities. The other modes — singleTask and singleInstance — are not appropriate for most applications , since they result in an interaction model that is likely to be unfamiliar to users and is very different from most other applications.   对于大多数应用来说,SingleTask 和 SingleInstance 并不适用,standrd 和 SingleTop对于普通的大部分Activity启动是适用的。 之所以使用singleTask

用Intent传递数据

社会主义新天地 提交于 2019-12-01 07:18:41
向下一个活动传递数据 Intent除了跳转活动,还可以在各个活动之间传递数据,我们来看一下。 启动活动时传递数据很简单,通过putExtra()方法,我们就可以将数据暂存在Intent中,putExtra()里要传入两个参数,第一个是键,用于第二个活动找到你,第二个则是存储的数据。 我们在MainActivity将之前的代码修改一下 button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String data="Hello!"; Intent intent=new Intent(MainActivity.this,SecondActivity.class); intent.putExtra("extra_data",data); startActivity(intent); } }); 1 2 3 4 5 6 7 8 9 那么第二个活动就得到了Intent里包含的数据,我们要将他取出来,通过getIntent来获取Intent,然后通过getStringExtra来获取传递的数据。(如果是int类型就是getIntExtra,以此类推) protected void onCreate(Bundle savedInstanceState) {

Activity四种启动模式

有些话、适合烂在心里 提交于 2019-12-01 05:09:39
Task Activity是Android应用程序的基础组件之一,在应用程序运行时,每一个Activity代表一个用户操作。用户为了完成某个功能而执行的一系列操作就形成了一个 Activity序列 , 这个序列在Android应用程序中就称之为任务(Task),它是从用户体验的角度出发,把一组相关的Activity组织在一起而抽象出来的概念。 standard 默认启动模式,可创建多个实例,也允许多个Activity相互叠加。 singleTop 可以有多个实例,但是不允许多个相同Activity叠加。若不在栈顶,则新建实例;若实例在栈顶,则重用该实例。 singleTask 只能存在一个实例。相当于Task内单例模式。若不存在则创建实例;若栈中已存在该实例,则重用该实例。重用时,该实例会回到栈顶,并将它上面的其他实例移除栈,并进入onNewIntent方法中。 比如1和3启动模式是standard,2是启动模式是singleTask,启动顺序是133111211333213312,返回是133111,只保留了最开头几个栈。2之间的栈都被移除了。 singleInstance 只存在一个实例,独立运行于一个task中。相当于全局单例模式。 比如1,3,4的启动模式是standard,2启动模式为singleInstance,启动顺序是4312434324,退出顺序为434342。

adb相关

南笙酒味 提交于 2019-12-01 05:07:33
判断当前界面的所属 activity 123 adb shell dumpsys activity adb shell dumpsys activity topadb shell dumpsys activity top | grep ACTIVITY 移动测试基础 android 中 dumpsys 命令使用 https://blog.csdn.net/qq_31028313/article/details/79679355 (1)查看当前Activity : adb shell “dumpsys window w | grep name=” (2)查看当前栈顶的Activity : adb shell “dumpsys activity | grep mFocusedActivity” (3)查看当前栈顶的Activity的Fragment : adb shell dumpsys activity your.package.name 启动程序 1 adb shell am start -n com.tencent.mm/.ui.LauncherUI 停止程序 1 adb shell am force-stop com.tencent.mm wifi 连接手机 https://blog.csdn.net/u013250071/article/details/80527993

android之Fragment(官网资料翻译)

纵饮孤独 提交于 2019-12-01 04:12:34
Fragment要点 Fragment作为Activity界面的一部分组成出现 可以在一个Activity中同时出现多个Fragment,并且,一个Fragment亦可在多个Activity中使用。 在Activity运行过程中,可以添加、移除或者替换Fragment(add()、remove()、replace()) Fragment可以响应自己的输入事件,并且有自己的生命周期,当然,它们的生命周期直接被其所属的宿主activity的生命周期影响。 设计哲学 Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互。Fragment允许这样的一种设计,而不需要你亲自来管理 viewhierarchy的复杂变化。 通过将activity的布局分散到fragment中, 你可以在运行时修改activity的外观,并在由activity管理的back stack中保存那些变化.( http://developer.android.com/guide/topics/fundamentals/fragments.html ) 例如, 一个新闻应用可以在屏幕左侧使用一个fragment来展示一个文章的列表

[Android] Activity的Launch mode详解

假如想象 提交于 2019-11-30 11:37:44
Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance。以下逐一举例说明他们的区别: standard :Activity的默认加载方法,即使某个Activity在Task栈中已经存在,另一个activity通过Intent跳 转到该activity,同样会新创建一个实例压入栈中。例如:现在栈的情况为:A B C D,在D这个Activity中通过Intent跳转到D,那么现在的栈情况为: A B C D D 。此时如果栈顶的D通过Intent跳转到B,则栈情况为:A B C D D B。此时如果依次按返回键,D D C B A将会依次弹出栈而显示在界面上。 singleTop :如果某个Activity的Launch mode设置成singleTop,那么当该Activity位于栈顶的时候,再通过Intent跳转到本身这个Activity,则将不会创建一个新的 实例压入栈中。例如:现在栈的情况为:A B C D。D的Launch mode设置成了singleTop,那么在D中启动Intent跳转到D,那么将不会新创建一个D的实例压入栈中,此时栈的情况依然为:A B C D。但是如果此时B的模式也是singleTop,D跳转到B,那么则会新建一个B的实例压入栈中,因为此时B不是位于栈顶