在Android开发中,我们通常要在不同页面之间传递数据,比如要从ActivityA启动ActivityB并传递数据到ActivityB里面,这个很简单,用Intetn加Bundle就可以了。不过有时候如果您需要让后台运行的Activity回到前台并传递数据就有些问题。
通常,我们通过Intent启到Activity的时候,就算存在一个相同的正在运行的Activity,系统都会创建一个新的Activity实例并显示出来。此时我们最好就是让Activity不启动多次,通过在AndroidManifest.xml配置activity的加载方式(launchMode)以实现单任务模式(android:launchmode
=
"singleTask"
)。singleTask的时候,启到一个ActivityA,如果系统已经存在ActivityA实例,系统就会直接启动ActivityA。然而这个时候,系统不会再调用通常情况下我们处理请求数据的onCreate方法,而是调用onNewIntent方法,如下所示:
注意:
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
//处理数据,data=getIntent().get.....
}
在上面这个方法中,如果没有调用setIntent(intent),则getIntent()获取的数据将不是你所期望的。所以最好是先调用setIntent(intent),这样再调用getIntent()获取数据就没问题了。
Acitivity在singleTask加载模式下的数据传递处理
原文:http://blog.csdn.net/true100/article/details/43982429