两个正在运行的activity之间的通信

转载 2012年03月29日 13:33:29

http://blog.sina.com.cn/s/blog_7e3a44200100ssln.html


http://apkbus.com/forum.php?mod=viewthread&tid=4215&extra=page=2

转自安卓巴士开发者

在android应用程序开发的时候,从一个activity启动另一个activity并传递一些数据到新的activity非常的简单,但是当您需要让后台运行的activity回到前台并传递一些数据可能就会存在一点点小问题。

首先,在默认情况下,当您通过intent启到一个activity的时候,就算已经存在一个相同的正在运行的activity,系统都会创建一个新的activity实例并显示出来。为了不让activity实例化多次,我们需要通过在AndroidManifest.xml配置activity的加载方式(launchMode)以实现单任务模式,如下所示:
  1. <activity android:label="@string/app_name"android:launchmode="singleTask"android:name="Activity1">
  2. </activity>
复制代码
launchMode为singleTask的时候,通过intent启到一个activity,如果系统已经存在一个实例,系统就会将请求发送到这个实例上,但这个时候,系统就不会再调用通常情况下我们处理请求数据的onCreate方法,而是调用onNewIntent方法,如下所示:
  1. protected void onNewIntent(Intent intent) {
  2.   super.onNewIntent(intent);
  3.   setIntent(intent);//must storethe new intent unless getIntent() will return the old one
  4.   processExtraData();
  5. }
复制代码
不要忘记,系统可能会随时杀掉后台运行的activity,如果这一切发生,那么系统就会调用onCreate方法,而不调用onNewIntent方法,一个好的解决方法就是在onCreate和onNewIntent方法中调用同一个处理数据的方法,如下所示:
  1. public void onCreate(Bundle savedInstanceState) {
  2.   super.onCreate(savedInstanceState);
  3.   setContentView(R.layout.main);
  4.   processExtraData();
  5. }

  6. protected void onNewIntent(Intent intent) {
  7.   super.onNewIntent(intent);
  8.   setIntent(intent);//must storethe new intent unless getIntent() will return the old one
  9.   processExtraData()
  10. }

  11. private void processExtraData(){
  12.   Intent intent =getIntent();
  13.   //use the data receivedhere
  14. }
复制代码


Android之 Activity间通信总结

在Android中,Activity作为界面显示。google并不推荐在Activity中做耗时操作,如果Activity操作耗时超过5s时,会提示是否等待对话框。 一般耗时操作会在Service中处...
  • IO_Field
  • IO_Field
  • 2015年12月29日 17:11
  • 1538

Android学习笔记一:两个Activity通信

出处:http://blog.csdn.net/xiazdong/article/details/7664757 一、Intent与Activity应用   0.创建新的Activity步骤...
  • wuhenyouyuyouyu
  • wuhenyouyuyouyu
  • 2016年05月12日 09:14
  • 433

两个简单Fragment之间的通信

两个简单Fragment之间的通信 建立两个Fragment,然后各添加1个按钮和1个TextView。 单击Fragment1的按钮修改Fragment2里的TextView文本。 相同的,单击Fr...
  • qq_26849491
  • qq_26849491
  • 2016年05月07日 15:30
  • 1915

Android之Activity之间的数据通信方式大全(一)

最近二期项目正在讨论需求,本人小小程序员只有搞搞维护的份。刚工作不久,技术经验不足,随时准备找份更好的工作,闲来无事,看看Android面试经典啥的,就看到有问Activity之间数据通信方式都有哪些...
  • a_running_wolf
  • a_running_wolf
  • 2015年09月29日 23:20
  • 2292

Fragment和Activity通信以及Fragment之间通信的两种方式

Fragment之间通信很简单……这里只是提供思路,无论是Fragment和Activity还是Fragment之间,通信的原理都是如此,所以Fragment之间通信不能直接通信,必须依靠所依附的Ac...
  • yalinfendou
  • yalinfendou
  • 2015年03月27日 15:11
  • 3809

利用Intent进行Activity之间的通信(2)

Intent对象是component用来与操作系统通信的一种媒介工具。 作用原理 当需要从一个Activity启动另一个Activity时,一般做法是在按钮的监听器中创建一个Intent对象,...
  • wyb_hardworking
  • wyb_hardworking
  • 2014年12月04日 18:41
  • 467

Android 两个Activity之间传递数据及返回

从Activity1带参数跳转到Activity2这个经常用到,比较熟悉,但如何从Activity2将数据返回给Activity1呢?这个其实也不麻烦,动手敲一下就知道了。 Activity1代...
  • zhang070514
  • zhang070514
  • 2016年03月22日 16:52
  • 1824

两个Activity之间通过Intent相互(双向)传递数据

两个Activity通过Intent相互交换数据,在Activity中用一个Button 选择是否接受数据,不能直接写在onCreate中否则在Activity1 中获取从Activity2发送的数据...
  • fuckluy
  • fuckluy
  • 2016年03月19日 22:23
  • 1389

Android Service与Activity之间通信的几种方式

转载请注明地址http://blog.csdn.net/xiaanming/article/details/9750689 在Android中,Activity主要负责前台页面的展示,Service主...
  • yuyi533599
  • yuyi533599
  • 2016年09月07日 22:09
  • 1622

关于Fragment与Fragment、Activity通信的四种方式

一直想总结一下Fragment与Fragment、Activity通信的问题,今天有时间一共总结了三种,权当抛砖引玉,如果大家还有更好的方式来实现Fragment和Fragment、Activity的...
  • u012702547
  • u012702547
  • 2015年11月11日 22:48
  • 24137
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:两个正在运行的activity之间的通信
举报原因:
原因补充:

(最多只允许输入30个字)