Activity的启动模式
来源:互联网 发布:just we闹钟淘宝 编辑:程序博客网 时间:2024/06/16 12:07
Activity有四种启动模式。在AndroidManifest中进行设置,在Activity中添加“launchMode”属性。属性值分别是Standrard,SingleTop, SingleTask, SingleINstance.
standard
该启动模式是每开启一个Activity都会创建一个实例。例如:我们定义一个MainActivity,在MainActivity中设置一个按钮每点击一下,在进入一次MAinActivity。代码实现如下:
//MainActivitypublic class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { Log.d("Activity", this.toString()); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnSecond = (Button) findViewById(R.id.btnSecond); btnSecond.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intentSecond = new Intent(MainActivity.this,MainActivity .class); startActivity(intentSecond); } }); }}
//MAinActivity的布局文件<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:orientation="vertical"> <Button android:id="@+id/btnSecond" android:text="Button" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
//在Mainifest中注册,并设置启动模式。<activity android:name=".MainActivity" android:label="@string/app_name" android:launchMode="standard" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
结果显示如下:
singleTop
该启动模式是如果当前开启的Activity处于栈顶,则不会在创建新的实例,如果没有处于栈顶,则会创建一个新的实例。
代码实现如下:
//MainActivitypublic class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { Log.d("Activity", this.toString()); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnSecond = (Button) findViewById(R.id.btnSecond); btnSecond.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intentSecond = new Intent(MainActivity.this,MainActivity .class); startActivity(intentSecond); } }); }}//SecondActivity
//MAinActivity的布局文件<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:orientation="vertical"> <Button android:id="@+id/btnSecond" android:text="Button" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
//在Mainifest中注册,并设置启动模式。<activity android:name=".MainActivity" android:label="@string/app_name" android:launchMode="singleTop" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
结果显示如下:
singleTask
该启动模式是如果当前开启的Activity处于栈顶,则不会在创建新的实例,如果没有处于栈顶,会将该Activity之上的所有Activity清除出栈,然后运行该Activity,所以也不会创建新的实例。在此不在进行代码演示。
singleInstance
指定为singleInstance模式的活动会创建一个新的栈来存储自己。我们可以通过举例来理解该模式的应用场景:假设我们开发的应用中有一个活动是允许其他程序来调用的,我们想要其他程序调用的实例与我们自己程序调用该Activity的实例是同一个,以实现信息数据的共享。显然这个时候我们用其他三个变量是不可以的,所以我们可以使用singleInstance启动该Activity。
(嘤嘤,博主今天比较懒,不在进行举例说明了哦,文字描述的还是可以的,将就看吧……)
0 0
- activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity 的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- activity的启动模式
- Activity的启动模式
- Objective-C 【类方法/对象方法-匿名类-new&alloc init区别】
- IOS TabBar小知识(不断更新中。。。)
- jQuery的deferred对象详解
- Java之美[从菜鸟到高手演变]之Java学习方法
- 第16章 Hibernate事务处理和缓存管理
- Activity的启动模式
- 2.动画相关
- HTML5---Canvas-画线,空心图,矩形,文字,三角形,旋转图片
- Spring + Activiti + Drools整合的请假例子
- POJ 2425 A Chess Game(SG函数的有向图博弈游戏)
- HDU 2516 取石子游戏( FIB博弈 )
- DevExpress v15.1:WPF控件升级(四)
- Eclipse插件开发菜单路径
- 更改linux文件夹的默认颜色