Android中关于startActivityForResult()在activity不同启动模式下onActivityResult()的回调
16lz
2021-01-23
作为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()回调方法会在什么时候调用呢?
会做了吗?
更多相关文章
- Android实现在webview中长按图片弹出菜单保存图片
- Android ListView的item点击无响应的解决方法
- Android调用JNI出错 java.lang.UnsatisfiedLinkError: No implem
- android中使用jni,ndk的C语言回调方法
- 通过Android Studio3.5.3编译安装App失败,提示安装包异常解决方
- Android快速开发框架之xUtils---图片模块