Activity设置singleInstance后不能启用startActivityForResult()进行数据回调
来源:互联网 发布:一列数据怎么求和 编辑:程序博客网 时间:2024/06/05 18:39
一般情况下如果我们想从A跳到B,并希望B操作完毕后返回操作结果到A,我们第一时间就会想到运用startActivityForResult()进行处理
但是...
如果A的LauncherMode设置成了singleTop或者singleInstance,这招就会失灵
查看startActivityForResult()的文档,是这样描述的:
Note that this method should only be used with Intent protocols that are defined to return a result. In other protocols (such as
or android.content.Intent.ACTION_MAIN
), you may not get the result when you expect. For example, if the activity you are launching uses the singleTask launch mode, it will not run in your task and thus you will immediately receive a cancel result.android.content.Intent.ACTION_VIEW
最后一句大概意思是如果你将A设置成了singleTask那么你启动B时不会等待返回,只会马上得到返回码为Activity.RESULT_CANCELED.是不会得到你想要的结果的。
其实这个时候需要使用方法onNowIntent(Intent intent)主动获取,而不是等待startActivityForResult()的返回
详细如下:
1, 在A启动B时,使用平常的startActivity()方法
2,在B处理完毕准备返回结果时,直接通过startActivity()重新激活栈中的A,这时应该将你想返回的数据寄存到intent里面
- Intent intent = new Intent(this, A.class);
- intent.putExtra("your callback data label", "your callback data");
- startActivity(intent);
- @Override
- protected void onNewIntent(Intent intent) { // ActManager设置了singleInstance,可以通过这个方法获取重新启动ActManager的intent数据
- // TODO Auto-generated method stub
- super.onNewIntent(intent);
- backDetail = intent.getBooleanExtra("delete", true);
- }
- public void onResume() {
- super.onResume();
- if (backDetail) {
- // do somthing
- }
- }
就这样可以实现singleInstance的参数回调
- Activity设置singleInstance后不能启用startActivityForResult()进行数据回调
- Activity设置singleInstance后不能启用startActivityForResult()进行数据回调
- Activity设置singleInstance后不能启用startActivityForResult()进行数据回调
- Activity设置singleInstance后不能启用startActivityForResult()进行数据回调
- Activity设置singleInstance后不能启用startActivityForResult()进行数据回调
- android Activity android:launchMode="singleInstance" 与 startActivityForResult
- Activity回传数据方法startActivityForResult onActivityResult
- Activity回传数据方法startActivityForResult onActivityResult
- Activity回传数据方法startActivityForResult onActivityResult
- 【startActivityForResult】Android Activity回传数据
- 【Android 一般进阶】singleInstance和singleTask导致startActivityForResult回调失败
- Fragment Activity 中startActivityForResult的回调
- Fragment Activity 中startActivityForResult的回调
- single task Activity不能使用startActivityForResult解释
- android中Activity的启动模式是singleTask或singleInstance与startActivityForResult,onActivityResult
- singleInstance或singleTask的设置导致onActivityResult回调失效
- 返回数据到前一个Activity--startActivityForResult
- 两个activity之前传递数据startActivityForResult
- ibatis的iterate使用 方便or的使用
- Servlet源码深入学习
- RAC之FAILOVER
- 我在学习编程中犯的两个最大错误
- 在线编程协作平台FriendCode获15万美元种子期融资,并开放注册
- Activity设置singleInstance后不能启用startActivityForResult()进行数据回调
- linux 标准目录结构
- 简单工厂模式和工厂方法模式
- 1)从本地磁盘读取图片 2)将输入流转换为字节数组 3)使用字节数组创建Image对象
- 利用createPackageContext()方法遇到的问题
- MyEclipse 设置条件断点
- 能做一辈子的工作
- RAC之VIP配置
- 安装win7驱动显示“需要交互式窗口工作站”的若干解决方法