现在想尝试一下,两个应用间的测试,废话不多说,上代码。
app1代码如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kv.app1">
<application android:icon="@mipmap/ic_launcher"
android:label="@string/app_name">
<activity android:name=".App1Act1">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".App1Act2" android:taskAffinity="com.kf.app"/>
<activity android:name=".App1Act3"/>
<activity android:name=".App1Act4"/>
</application>
</manifest>
public class App1Act1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act1);
findViewById(R.id.btn1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(App1Act1.this, App1Act2.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
});
}
}
public class App1Act2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act2);
findViewById(R.id.btn1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(App1Act2.this, App1Act3.class);
startActivity(intent);
}
});
}
}
app2代码如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kv.app2">
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name">
<activity android:name="com.kv.app2.App2Act1">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".App2Act2" android:taskAffinity="com.kf.app" />
<activity android:name=".App2Act3" />
<activity android:name=".App2Act4" />
</application>
</manifest>
public class App2Act1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act1);
findViewById(R.id.btn1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(App2Act1.this, App2Act2.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
});
}
}
public class App2Act2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act2);
findViewById(R.id.btn1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(App2Act2.this, App2Act3.class);
startActivity(intent);
}
});
}
}
如下操作步骤:
1.先启动app1,启动了app1Act1,点击按钮启动app1Act2。
2.点击home键退到后台,点击app2。
3.启动app2,启动了app2Act2,点击按钮启动app2Act2。
敲adb指令
adb shell dumpsys activity
结果如下:
Task id #13645
TaskRecord{19079e91 #13645 A=com.kf.app U=0 sz=2}
Intent { flg=0x10000000 cmp=com.kv.app1/.App1Act2 }
Hist #1: ActivityRecord{29ceaf63 u0 com.kv.app2/.App2Act2 t13645}
Intent { flg=0x10400000 cmp=com.kv.app2/.App2Act2 }
ProcessRecord{984b615 26342:com.kv.app2/u0a1054}
Hist #0: ActivityRecord{37bf0e0b u0 com.kv.app1/.App1Act2 t13645}
Intent { flg=0x10000000 cmp=com.kv.app1/.App1Act2 }
ProcessRecord{12276da0 26427:com.kv.app1/u0a1053}
Task id #13646
TaskRecord{2fb4e1f6 #13646 A=com.kv.app2 U=0 sz=1}
Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x30200000 cmp=com.kv.app2/.App2Act1 }
Hist #0: ActivityRecord{3506b230 u0 com.kv.app2/.App2Act1 t13646}
Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x30200000 cmp=com.kv.app2/.App2Act1 bnds=[283,86][535,371] }
ProcessRecord{984b615 26342:com.kv.app2/u0a1054}
Task id #13644
TaskRecord{272159f7 #13644 A=com.kv.app1 U=0 sz=1}
Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x30200000 cmp=com.kv.app1/.App1Act1 }
Hist #0: ActivityRecord{1a07ead2 u0 com.kv.app1/.App1Act1 t13644}
Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x30200000 cmp=com.kv.app1/.App1Act1 bnds=[21,86][273,371] }
ProcessRecord{12276da0 26427:com.kv.app1/u0a1053}
可以看出App1Act2和App2Act2在同一个Task里面。然后点击回退键,你会惊人的发现,是下面的退出方式:
1. App2Act2 -> App1Act2 -> App2Act1 -> 桌面
2. 从任务管理器重新点击App1, 发现App1的app1Act2也被关闭了。