作为Android的开发者,关于startActivityForResult()相信大家都比较熟悉,在这里就不班门弄斧了。但是,关于startActivityForResult()在activity不同启动模式下onActivityResult()的回调有必要跟大家分享下。

1.BActivity的启动模式为standard

<activity android:name=".ui.AActivity" /><activity android:launchMode="standard" android:name=".ui.BActivity"/>
/** 2. AActivity逻辑比较简单,startActivityForResult跳转到BActivity 3. 然后打印onActivityResult()回调信息 4.  5. Created by XQM on 2018/4/3. */public class AActivity extends BaseActivity{    private int REQUEST_CODE = 1;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.fragment_set);    }    @OnClick(R.id.btn_move)    public void onViewClicked(View view) {        Intent intent = new Intent(this,BActivity.class);        startActivityForResult(intent,REQUEST_CODE);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        if (requestCode == REQUEST_CODE && resultCode == 2){            String name = data.getStringExtra("name");            Log.e("AActivity",name+"返回了,AActivity回调:"+"-------onActivityResult()--------");        }    }}
** * BActivity同样非常简单 *  * Created by XQM on 2018/4/3. */public class BActivity extends AppCompatActivity {    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Intent intent = new Intent();        intent.putExtra("name","BActivity");        setResult(2,intent);        finish();    }}

这里写图片描述
B返回A结果肯定回调onActivityResult()方法

2. BActivity的启动模式为singleTop

<activity android:name=".ui.AActivity" /><activity android:launchMode="singleTop" android:name=".ui.BActivity" />

这里写图片描述
B返回A结果同样回调onActivityResult()方法

.3. BActivity的启动模式为singleTask
大家可以先想想再看结果,猜想B返回A结果会回调onActivityResult()方法,下面认证下。

<activity android:name=".ui.AActivity" /><activity android:launchMode="singleTask" android:name=".ui.BActivity" />

这里写图片描述
果然结果跟猜想一致,B返回A回调了onActivityResult()方法,接下来看最后一种情况。

.4. BActivity的启动模式为singleInstance

<activity android:name=".ui.AActivity" /><activity android:launchMode="singleInstance" android:name=".ui.BActivity" />

这里写图片描述
非常震惊!onActivityResult()在activity四种启动模式下都可以回调。所以这样的题目:关于startActivityForResult()方法,如果是A跳转B,B的launchMode属性为singleInstance,A的onActivityResult()回调方法会在什么时候调用呢?
会做了吗?

更多相关文章

  1. Android实现在webview中长按图片弹出菜单保存图片
  2. Android ListView的item点击无响应的解决方法
  3. Android调用JNI出错 java.lang.UnsatisfiedLinkError: No implem
  4. android中使用jni,ndk的C语言回调方法
  5. 通过Android Studio3.5.3编译安装App失败,提示安装包异常解决方
  6. Android快速开发框架之xUtils---图片模块

随机推荐

  1. android 被强制横屏,Activity重启问题解决
  2. Android(java)学习笔记94:关于广播接收者的
  3. Android中的异常处理 CrashHandler
  4. Android的Service总结
  5. Android(安卓)user defined service hand
  6. Android(安卓)AIDL 实例
  7. 看Android(安卓)應用框架原理與程式設計36
  8. Programming 3D games on Android(安卓)w
  9. No resource identifier found for attri
  10. android高效编程之使用本地变量