android 的四种启动模式
来源:互联网 发布:fzltchjw gb1 0 mac 编辑:程序博客网 时间:2024/05/02 05:04
activity的启动模式很简单,只有四种:
1.standard,标准模式也是默认模式。
android:launchMode="standard"当你在清单文件中没有给activity设置启动模式时,默认的就是standard模式。该模式有一个特点就是在一个app的activity栈中可以存在多个。
Intent intent = new Intent(MainActivity.this, MainActivity.class); startActivity(intent);每运行一次startActivity()方法时,栈中就会出现一个activity的实例
2.当一个activity的实例在栈顶的时候,不想在添加该activity的实例,我们还可以选择第二种activity的启动模式,
android:launchMode="singleTop"再次运行startactivity方法时,
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i("tag", "MainActivity onCreate"); initview(); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); Log.i("tag", "MainActivity onNewIntent"); }打印结果:
10-26 17:39:57.806 6260-6260/com.myanimationapplication I/tag: MainActivity onCreate10-26 17:40:02.615 6260-6260/com.myanimationapplication I/tag: MainActivity onNewIntent可以看到程序没走onCreate,只是走了onnewintent方法,但是当栈顶不是该activity的实例时,跳转到MainActivity 时程序还是会走oncreate方法的
3.假如我想无论跳转到mainactivity多少次,这个栈中只有一个mainactivity实例,应该怎么破?这样我们就需要用到第三种启动模式,
android:launchMode="singleTask"当mainactivity设置为singletask启动模式时,无论从哪个activity跳到mainactivity,程序都不回再次走oncreate方法,而且还会把栈中mainactivity实例上端的其他activity实例销毁掉,
mainactivity代码:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i("tag", "MainActivity onCreate"); initview(); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); Log.i("tag", "MainActivity onNewIntent"); }
MySecondActivity代码重写一个ondestroy方法,如下:
@Override protected void onDestroy() { super.onDestroy(); Log.i("tag", "MySecondActivity onDestroy"); }打印结果:
10-26 17:51:35.080 18824-18824/? I/tag: MainActivity onCreate10-26 17:52:41.080 18824-18824/com.myanimationapplication I/tag: MainActivity onNewIntent10-26 17:52:41.081 18824-18824/com.myanimationapplication I/tag: MainActivity onRestart10-26 17:52:41.410 18824-18824/com.myanimationapplication I/tag: MySecondActivity onDestroy可以看出日志纸打印了一次oncreate,在跳回MainActivity时走了onNewIntent方法和onRestart方法,而且MySecondActivity调用了ondestroy
<span style="font-family: Arial, Helvetica, sans-serif;">4.第四种启动模式:</span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'Consolas';font-size:12.0pt;"><span style="color:#9876aa;">android</span><span style="color:#bababa;">:launchMode=</span><span style="color:#6a8759;">"singleInstance"</span>之前的三种启动模式只是app内部的交互,singleInstance模式就涉及到和其他的app进行交互。设置为这种模式的activity就可以和其他的app共享这个activity。该activity的实例不会出现在该app的栈中而是会新建一个栈。
1 0
- android Activity的四种启动模式
- Android Activity的四种启动模式
- Android的四种启动模式
- Android-activity的四种启动模式
- Android Activity的四种启动模式
- android activity启动的四种模式
- android activity的四种启动模式
- Android 的 Activity 四种启动模式
- android activity 的四种启动模式
- Android的四种启动模式
- Android Activity的四种启动模式
- Android的四种启动模式(launchModel)
- android activity启动的四种模式
- Android的四种启动模式
- Android 活动的四种启动模式
- android activity的四种启动模式
- android 启动Activity的四种模式
- Android的四种启动模式
- 百度地图绘制图形
- 在满眼是“坑”的影视投资圈中,《湄公河行动》背后投资人是如何一击就中的?
- 魔门云获得百万级天使轮投资,由创客100创投基金领投
- Spring MVC注解汇总
- 数据库设计原则
- android 的四种启动模式
- java线程池的使用与实现简单的线程池
- 写作资源
- Hql的参数绑定
- JavaScriptCore(1)
- poj1726 Tango Tango Insurrection
- 荷兰国旗问题(改造快速排序)
- 求两个数a和b的最大公约数
- HelloCharts重新绘图时旧数据残留问题