Activity的四种加载模式(6)
来源:未知 责任编辑:责任编辑 发表时间:2014-02-18 03:21 点击:次
我们下面来研究一下当singleTask的Activity被其他应用调用时的情况。
为了使Activity1能够被其他应用程序调用,我们在AndroidManifest.xml中加入action,如下:
Java代码
<activity android:name=".Activity1"
android:launchMode="singleTask"
android:label="@string/app_name">
<intent-filter>
<action android:name="com.winuxxan.singleTask" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
然后我们另外创建一个工程,创建一个Activity在初始化的时候启动Activity1,代码如下:
Java代码
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.e("MyActivity", "TaskId=" + getTaskId());
Intent intent = new Intent("com.winuxxan.singleTask");
startActivity(intent);
}
我们的操作方法是,MyActivity->Activity1->Activity2->Activity1,之后我们按Home键,然后再从Home重新进入MyActivity所在的应用。
首先看MyActivity->Activity1这个过程,我们查看Log信息如下:
03-01 15:04:25.784: ERROR/MyActivity(429): TaskId=9
03-01 15:04:26.244: ERROR/Activity1(401): Activity1 onCreate! HashCode=1156107632 TaskId=10
从这个Log信息我们可以看出:当某个应用调用其他应用里声明的singleTask模式的Activity时,它会重新创建一个Task,然后将该Activity实例化并压入堆栈。
接着我们看Activity1和Activity2的相互切换,log信息如下:
03-01 15:04:47.524: ERROR/Activity2(401): Activity2 onCreated! HashCode=1156128104 TaskId=10
03-01 15:04:50.674: ERROR/Activity1(401): Activity1 onNewIntent! HashCode=1156107632 TaskId=10
03-01 15:04:50.994: ERROR/Activity2(401): Activity2 onDestroy! HashCode=1156128104 TaskId=10
和我们所期望的那样,如果Activity发现已经存在时,会销毁其上的Activity,然后调用onNewIntent。
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>