打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
android onnewintent()函数的使用
今天在编程的时候,遇到这样的情况,一个Activity A跳转到另一个Activity B(Activity A并没有被finish掉),B处理完后,将一些值通过Intent重新传回给Activity A。在这里笔者并没有使用startActivityforResult函数,而是简单地使用startActivity函数。并且Activity A在Androidmanifest.xml文件中将启动模式设置为“singleTask”。但是,再次回到Activity A时使用Intent获取B传过来的值时无法获取。不知道是什么原因。因为再次回到A时,不会执行onCreate()函数,所有把从Intent中获取值的过程放到了onResume()函数中。http://www.360doc.com/writeart3.aspx
经过网上的查询,在A中添加了onnewintent()函数,问题得到解决:
onNewIntent(Intent intent) {   .onNewIntent(intent);     setIntent(intent);}
下面具体来分析一下逻辑。
第一次创建Activity A时,执行的逻辑顺序是:onCreate() --->onStart()--->onResume()。
而如果使用“singleTask”模式第二次启动Activity A,且A处于任务栈的顶端,则执行的逻辑顺序是:
onNewIntent() ---> onRestart() --->onStart() ---> onResume()。
通过Intent来再次启动A时,由于系统已经存在一个实例,喜用就会将请求发送到这个实例上。此时,系统不会再调用通常情况下处理请求数据的onCreate()方法,而是调用onNewIntent()方法。
所以,如果遇到了和我上面类似的问题,一个办法就是在onCreate()函数和onNewIntent方法中嗲用相同的处理数据的方法:
onCreate(Bundle savedInstanceState) {   .onCreate(savedInstanceState);   setContentView(R.layout.main);   Intent intent = getIntent();   ...... }
onNewIntent(Intent intent) {   .onNewIntent(intent);   setIntent(intent);   Intent intent = getIntent();   ...... }
当然,你也可以把二者相同的处理放到onResume()函数中,反正后面都要调用这个函数,避免同样的代码写2次。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Android总结篇系列:Activity中几个主要函数详解
android Activity类的使用
跟我学Android之十四 Activity的生命周期
Android中Activity的生命周期
Activity的四种启动模式和onNewIntent()
android singleTask使用情况,场景分析
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服