两个正在运行的activity之间的通信
2015-01-05 16:58
459 查看
在android应用程序开发的时候,从一个activity启动另一个activity并传递一些数据到新的activity非常的简单,但是当您需要让后台运行的activity回到前台并传递一些数据可能就会存在一点点小问题。
首先,在默认情况下,当您通过intent启到一个activity的时候,就算已经存在一个相同的正在运行的activity,系统都会创建一个 新的activity实例并显示出来。为了不让activity实例化多次,我们需要通过在AndroidManifest.xml配置activity 的加载方式(launchMode)以实现单任务模式,如下所示:
launchMode为singleTask的时候,通过intent启到一个activity,如果系统已经存在一个实例,系统就会将请求发送到这个实 例上,但这个时候,系统就不会再调用通常情况下我们处理请求数据的onCreate方法,而是调用onNewIntent方法,如下所示:
不要忘记,系统可能会随时杀掉后台运行的activity,如果这一切发生,那么系统就会调用onCreate方法,而不调用onNewIntent方法,一个好的解决方法就是在onCreate和onNewIntent方法中调用同一个处理数据的方法,如下所示:
首先,在默认情况下,当您通过intent启到一个activity的时候,就算已经存在一个相同的正在运行的activity,系统都会创建一个 新的activity实例并显示出来。为了不让activity实例化多次,我们需要通过在AndroidManifest.xml配置activity 的加载方式(launchMode)以实现单任务模式,如下所示:
<activity android:label="@string/app_name" android:launchmode="singleTask" android:name="Activity1"> </activity>
launchMode为singleTask的时候,通过intent启到一个activity,如果系统已经存在一个实例,系统就会将请求发送到这个实 例上,但这个时候,系统就不会再调用通常情况下我们处理请求数据的onCreate方法,而是调用onNewIntent方法,如下所示:
protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent);//must store the new intent unless getIntent() will return the old one processExtraData(); }
不要忘记,系统可能会随时杀掉后台运行的activity,如果这一切发生,那么系统就会调用onCreate方法,而不调用onNewIntent方法,一个好的解决方法就是在onCreate和onNewIntent方法中调用同一个处理数据的方法,如下所示:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); processExtraData(); } protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent);//must store the new intent unless getIntent() will return the old one processExtraData() } private void processExtraData(){ Intent intent = getIntent(); //use the data received here }
相关文章推荐
- 两个正在运行的activity之间的通信
- 两个正在运行的activity之间的通信
- 两个正在运行的activity之间的通信
- Android应用开发教程:两个运行的Activity之间的通信
- android 之 两个Activity之间的通信
- Android 两个activity之间通信
- 两个不相关Activity之间的通信
- 两个Activity之间用接口回调进行通信
- 使用Intent和Bundle在两个Activity之间进行通信添加上一步按钮实现回退
- Android基础教程之----SMS简单发送短信程序(两个模拟器之间的通信)!
- wince c# Dll与应用程序之间通信 返回Dll运行的状态
- Activity之间的通信
- android之系统正在运行的activity和services
- Android中Activity之间通信
- android:cha1.2 通过Intent实现Activity之间的通信
- Activity之间的通信(Intent)
- 【Android游戏开发之五】游戏注册界面Demo-实现两个Activity之间的切换与数据交互!
- 【Android游戏开发之五】游戏注册界面Demo-实现两个Activity之间的切换与数据交互!
- 二十、Activity之间通信
- Exchang server 2010 两个域之间的邮件通信