activity启动模式之singleInstance

Posted 范仁义

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了activity启动模式之singleInstance相关的知识,希望对你有一定的参考价值。

activity启动模式之singleInstance

一、简介

Log.d("C2", getTaskId()+"");里面的getTaskId()可以获取activity栈的编号

 

二、代码实例

结果图:

 

代码:

activity.C1

 1 package activity;
 2 
 3 
 4 
 5 
 6 
 7 import com.example.activityLaunchSingleInstance.R;
 8 
 9 import android.app.Activity;
10 import android.content.Intent;
11 import android.os.Bundle;
12 import android.util.Log;
13 import android.view.View;
14 import android.view.View.OnClickListener;
15 import android.widget.Button;
16 
17 
18 
19 public class C1 extends Activity implements OnClickListener{
20     private Button btn_c1;//创建一个button对象
21     private Button btn_c2;//创建一个button对象
22     private Button btn_c3;//创建一个button对象
23      protected void onCreate(Bundle savedInstanceState) {
24             super.onCreate(savedInstanceState);//父类操作
25             setContentView(R.layout.activity_main);//引入名为activity_main的界面
26             Log.d("C1", getTaskId()+"");
27             setTitle("我是C1");
28             btn_c1=(Button) findViewById(R.id.btn_c1);//找id为btn_openActivity的button
29             btn_c2=(Button) findViewById(R.id.btn_c2);//找id为btn_openActivity的button
30             btn_c3=(Button) findViewById(R.id.btn_c3);//找id为btn_openActivity的button
31             btn_c1.setOnClickListener(this);
32             btn_c2.setOnClickListener(this);
33             btn_c3.setOnClickListener(this);
34         }
35     @Override
36     public void onClick(View v) {
37         // TODO Auto-generated method stub
38         switch (v.getId()) {
39         case R.id.btn_c1:
40             Intent intent=new Intent();
41             intent.setClass(C1.this, C1.class);
42             startActivity(intent);
43             break;
44         case R.id.btn_c2:
45             Intent intent2=new Intent();
46             intent2.setClass(C1.this, C2.class);
47             startActivity(intent2);
48             break;
49         case R.id.btn_c3:
50             Intent intent3=new Intent();
51             intent3.setClass(C1.this, C3.class);
52             startActivity(intent3);
53             break;
54         default:
55             break;
56         }
57     }
58 }

activity.C2

 1 package activity;
 2 
 3 
 4 
 5 
 6 
 7 import com.example.activityLaunchSingleInstance.R;
 8 
 9 import android.app.Activity;
10 import android.content.Intent;
11 import android.os.Bundle;
12 import android.util.Log;
13 import android.view.View;
14 import android.view.View.OnClickListener;
15 import android.widget.Button;
16 import android.widget.Toast;
17 
18 
19 
20 public class C2 extends Activity implements OnClickListener{
21     private Button btn_c1;//创建一个button对象
22     private Button btn_c2;//创建一个button对象
23     private Button btn_c3;//创建一个button对象
24      protected void onCreate(Bundle savedInstanceState) {
25             super.onCreate(savedInstanceState);//父类操作
26             setContentView(R.layout.activity_main);//引入名为activity_main的界面
27             Log.d("C2", getTaskId()+"");
28             setTitle("我是C2");
29             btn_c1=(Button) findViewById(R.id.btn_c1);//找id为btn_openActivity的button
30             btn_c2=(Button) findViewById(R.id.btn_c2);//找id为btn_openActivity的button
31             btn_c3=(Button) findViewById(R.id.btn_c3);//找id为btn_openActivity的button
32             btn_c1.setOnClickListener(this);
33             btn_c2.setOnClickListener(this);
34             btn_c3.setOnClickListener(this);
35         }
36     @Override
37     public void onClick(View v) {
38         // TODO Auto-generated method stub
39         switch (v.getId()) {
40         case R.id.btn_c1:
41             Intent intent=new Intent();
42             intent.setClass(C2.this, C1.class);
43             startActivity(intent);
44             break;
45         case R.id.btn_c2:
46             Intent intent2=new Intent();
47             intent2.setClass(C2.this, C2.class);
48             startActivity(intent2);
49             break;
50         case R.id.btn_c3:
51             Intent intent3=new Intent();
52             intent3.setClass(C2.this, C3.class);
53             startActivity(intent3);
54             break;
55         default:
56             break;
57         }
58     }
59     
60     @Override
61     protected void onNewIntent(Intent intent) {
62         // TODO Auto-generated method stub
63         super.onNewIntent(intent);
64         Toast.makeText(this, "onNewIntent", Toast.LENGTH_SHORT).show();
65         Log.d("C2", "onNewIntent");
66     }
67 }

activity.C3

 1 package activity;
 2 
 3 
 4 
 5 
 6 
 7 import com.example.activityLaunchSingleInstance.R;
 8 
 9 import android.app.Activity;
10 import android.content.Intent;
11 import android.os.Bundle;
12 import android.util.Log;
13 import android.view.View;
14 import android.view.View.OnClickListener;
15 import android.widget.Button;
16 
17 
18 
19 public class C3 extends Activity implements OnClickListener{
20     private Button btn_c1;//创建一个button对象
21     private Button btn_c2;//创建一个button对象
22     private Button btn_c3;//创建一个button对象
23      protected void onCreate(Bundle savedInstanceState) {
24             super.onCreate(savedInstanceState);//父类操作
25             setContentView(R.layout.activity_main);//引入名为activity_main的界面
26             Log.d("C3", getTaskId()+"");
27             setTitle("我是C3");
28             btn_c1=(Button) findViewById(R.id.btn_c1);//找id为btn_openActivity的button
29             btn_c2=(Button) findViewById(R.id.btn_c2);//找id为btn_openActivity的button
30             btn_c3=(Button) findViewById(R.id.btn_c3);//找id为btn_openActivity的button
31             btn_c1.setOnClickListener(this);
32             btn_c2.setOnClickListener(this);
33             btn_c3.setOnClickListener(this);
34         }
35     @Override
36     public void onClick(View v) {
37         // TODO Auto-generated method stub
38         switch (v.getId()) {
39         case R.id.btn_c1:
40             Intent intent=new Intent();
41             intent.setClass(C3.this, C1.class);
42             startActivity(intent);
43             break;
44         case R.id.btn_c2:
45             Intent intent2=new Intent();
46             intent2.setClass(C3.this, C2.class);
47             startActivity(intent2);
48             break;
49         case R.id.btn_c3:
50             Intent intent3=new Intent();
51             intent3.setClass(C3.this, C3.class);
52             startActivity(intent3);
53             break;
54         default:
55             break;
56         }
57     }
58 }

/activityLaunchSingleInstance/AndroidManifest.xml

 1 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 2     package="com.example.activityLaunchSingleInstance"
 3     android:versionCode="1"
 4     android:versionName="1.0" >
 5 
 6     <uses-sdk
 7         android:minSdkVersion="8"
 8         android:targetSdkVersion="19" />
 9 
10     <application
11         android:allowBackup="true"
12         android:icon="@drawable/ic_launcher"
13         android:label="@string/app_name"
14         android:theme="@style/AppTheme" >
15         <activity
16             android:name="activity.C1"
17             android:label="@string/app_name" >
18             <intent-filter>
19                 <action android:name="android.intent.action.MAIN" />
20 
21                 <category android:name="android.intent.category.LAUNCHER" />
22             </intent-filter>
23         </activity>
24         <activity android:name="activity.C2" android:launchMode="singleInstance">
25             <intent-filter>
26                 <action android:name="com.example.activityLaunchSingleTask" />
27                 <category android:name="android.intent.category.DEFAULT" />
28             </intent-filter>
29         </activity>
30         <activity android:name="activity.C3"></activity>
31     </application>
32 
33 </manifest>

 

以上是关于activity启动模式之singleInstance的主要内容,如果未能解决你的问题,请参考以下文章

activity启动模式之singleTop

Android之Activity的启动模式

activity启动模式之singleInstance

android:Activity启动模式之singleTask

activity启动模式之standard

四大组件之Activity(下)——Activity的常用Manifest属性启动模式ADB调试