Activity的四种加载模式(5)
来源:未知 责任编辑:责任编辑 发表时间:2014-02-18 03:21 点击:次
setContentView(R.layout.main2);
Log.e(TAG, "Activity2 onCreated! HashCode=" + this.hashCode() + " TaskId="+getTaskId());
}
@Override
protected void onDestroy() {
Log.e(TAG, "Activity2 onDestroy! HashCode="+this.hashCode()+" TaskId="+getTaskId());
super.onDestroy();
}
/**点击进入Activity1*/
@Override
public boolean onTouchEvent(MotionEvent event) {
Intent intent = new Intent(this, Activity1.class);
startActivity(intent);
return super.onTouchEvent(event);
}
}
从代码中我们可以看出,每当两个Activity创建、销毁以及onNewIntent时,都会打印该Activity的HashCode和所在的Task id。
我们的操作步骤是这样的,打开应用程序,默认启动Activity2,点击Activity2,进入Activity1,再点击Activity1进入Activity2,再点击Activity2进入Activity1,然后按返回键,直到返回到Home。
晕了吧,好写个顺序来形象的表示下:Activity2->Activity1(singleTask)->Activity2->Activity1(singleTask)。^_^
进入Activity2,然后到Activity1,我们看Log信息为:
03-01 14:50:08.144: ERROR/Activity2(371): Activity2 onCreated! HashCode=1156067168 TaskId=7
03-01 14:50:13.923: ERROR/Activity1(371): Activity1 onCreate! HashCode=1156107384 TaskId=7
我们看到,当本应用启动singleTask的Activity(Activity1)时,Activity1并没用另外启用一个任务。而是在原来的任务中创建了它。
再从Activity1进入Activity2,然后再进入Activity1,这个过程,我们再看log信息:
03-01 14:53:50.823: ERROR/Activity2(371): Activity2 onCreated! HashCode=1156128904 TaskId=7
03-01 14:53:58.154: ERROR/Activity1(371): Activity1 onNewIntent! HashCode=1156107384 TaskId=7
03-01 14:53:58.394: ERROR/Activity2(371): Activity2 onDestroy! HashCode=1156128904 TaskId=7
从这个Log信息我们可以得到这个结论:当singleTask模式的Activity启动时,如果发现在某个Task中已经存在,那么它会先将该Activity(Activity1)上部的Activity(Activity2)销毁,然后调用它(Activity1)的onNewIntent函数。
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>