startActivityForResult()实现的机制
2015-11-16 15:48
477 查看
1、这个问题问度娘没有找到答案,结果还是问的谷哥。
一开始以为是新开了一个thread,然后查了一下,发现只是在UIThread里面,startActivityForResult() is asynchronous. That does not mean that your new activity will be executed in a different thread. If the new activity is part of your own application, it runs on the main application thread,
like all your other activities.
参见StackFlow:
http://stackoverflow.com/questions/3489164/what-is-the-mechanism-behind-startactivityforresult-in-android
同时,使用startActivityForResult()方法开启一个新的Activity,该sub-Activity不论以何种方式结束,都需要传一个值给前一个Aciivty,或者需要在onActivityResult(int requestCode, int resultCode, Intent data)方法里面,对data进行判空。
2、借用Developer文档中的说明也许更加明确。
startActivityForResult()使用的场景就是当你希望新启动的Activity结束之后能够有一个result返回给当前Activity时使用。在当前Activity中应该写 onActivityResult()方法获取数据。
参数:
intent The intent to start.
requestCode If >= 0, this code will be returned in onActivityResult() when the activity exits.
options Additional options for how the Activity should be started. See Context.startActivity(Intent, Bundle) for more details.
public void startActivityForResult (Intent intent, int requestCode, Bundle options) 一般来说,requestCode会 final int定义,如果它为负数,与普通的startActivity没有不同
(这段没怎么懂,求解释)文档中提出,使用该方法的前提是你使用的intent协议明确有返回结果,在其他的协定中,比如ACTION_VIEW和ACTION_MAIN中国,将得不到你想要的结果。比如,如果你的Activity模式是singleTask启动模式,此时将得不到想要的结果。
如果没有找到相应的Activity,会报错: ActivityNotFoundException
一开始以为是新开了一个thread,然后查了一下,发现只是在UIThread里面,startActivityForResult() is asynchronous. That does not mean that your new activity will be executed in a different thread. If the new activity is part of your own application, it runs on the main application thread,
like all your other activities.
参见StackFlow:
http://stackoverflow.com/questions/3489164/what-is-the-mechanism-behind-startactivityforresult-in-android
同时,使用startActivityForResult()方法开启一个新的Activity,该sub-Activity不论以何种方式结束,都需要传一个值给前一个Aciivty,或者需要在onActivityResult(int requestCode, int resultCode, Intent data)方法里面,对data进行判空。
2、借用Developer文档中的说明也许更加明确。
startActivityForResult()使用的场景就是当你希望新启动的Activity结束之后能够有一个result返回给当前Activity时使用。在当前Activity中应该写 onActivityResult()方法获取数据。
参数:
intent The intent to start.
requestCode If >= 0, this code will be returned in onActivityResult() when the activity exits.
options Additional options for how the Activity should be started. See Context.startActivity(Intent, Bundle) for more details.
public void startActivityForResult (Intent intent, int requestCode, Bundle options) 一般来说,requestCode会 final int定义,如果它为负数,与普通的startActivity没有不同
(这段没怎么懂,求解释)文档中提出,使用该方法的前提是你使用的intent协议明确有返回结果,在其他的协定中,比如ACTION_VIEW和ACTION_MAIN中国,将得不到你想要的结果。比如,如果你的Activity模式是singleTask启动模式,此时将得不到想要的结果。
如果没有找到相应的Activity,会报错: ActivityNotFoundException
相关文章推荐
- Java中的枚举和泛型复习
- 数据库的事务隔离级别的通俗理解
- Struts2 iterator遍历集合
- MongoDB3.0以上安装
- android的广播
- no route to host zabbix的解决办法
- JS报错:Permission denied to access property 'document'---document.domain - JavaScript的同源策略问题
- Java中使用MD5进行计算摘要
- Java简介(4)-关键字
- adapter改变 Listview没有接收到通知
- 字体制作
- 任意位数随机数方法
- BAT解密:互联网技术发展之路(2)- 业务如何驱动技术发展
- Chrome浏览器实用小技巧
- 关于Mac版SourceTree 的使用和出现的一些问题
- 我的触摸屏制作”简史“2
- 一幅图弄清DFT与DTFT,DFS的关系
- eclipse远程调试
- A Magic Lamp---hdu3183(链表删除| RMQ)
- hihoCoder 1258 Osu! Master(水)