Activity启动模式记录
16lz
2022-04-15
android:launchMode="standard":这种启动模式下,每startActivity()一次,即在内存中创建一个新实例。
android:launchMode="singleTop":如果在栈的顶端有该activity的引用存在,则再一次startActivity()不会onCreate创建新的,而是复用存在的实例,调用onNewIntent()方法。
android:launchMode="singleTask":只要整个栈中有该activity的引用存在,则再一次startActivity()不会onCreate创建新的,而是复用存在的实例,调用onNewIntent()方法。
android:launchMode="singleInstance":第一次创建后,即另开启一个任务栈,并且该新栈只能存在它的一个引用;再一次startActivity()不会onCreate创建新的,而是复用存在的实例,调用onNewIntent()方法。
再来看看startActivityForResult()方法:(亲测)
现在演示:A startActivityForResult()开启B,然后B返回数据;
如果A为standardB为singleTask、singleInstance,返回失败;A调用startActivityForResult()开启B后,会立即调用A的onActivityResult();此时B操作数据没有返回(还没获取)B为singleTop和standard都正常返回数据。如果A为singleTop同上如果A为singleTask同上如果A为singleInstance,则返回数据全失败
综上:如果需要自己的Activity中开启系统照相机,然后返回数据,请自己的activity不要设置为singleInstance;如果非要是singleInstance,那就不能使用onActivityResult方式获取返回数据了;可以在保存照片后,从SD卡中获取图片。
setResult()方法在onPause、onDestory()中执行是无效的。其它生命周期方法中执行有效。
每按一次后退键,都会调用onDestory();
调用this.finish(),会自动调用onDestory();
通知点击,传的intent值,进入目标Activity时,会调用onNewIntent()方法,只要该activity不为singleInstance,intent带的值都能取到。
Intent intent = new Intent(ctx, MainActivity.class);intent.putExtra("time", time);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0,intent, 0);
目标activity
@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);Logger.d(TAG, "MainActivity onNewIntent");String time = intent.getStringExtra("time");Logger.d(TAG, "onNewIntent time: "+time);if(!TextUtils.isEmpty(time)){Logger.d(TAG, "time: "+time);//经营数据mTabHost.setCurrentTab(0);rb_main_data.setChecked(true);//设置已读PushMsgDao dao = new PushMsgDao(this);SystemMessage systemMessage = dao.findMsgByTime(time);dao.setReaded(systemMessage.getId());}else{Logger.d(TAG, "没有时间");}}
更多相关文章
- android中的提示信息显示方法(toast应用)
- adb devices 找不到设备的解决方法
- Android百度地图(一):百度地图定位sdk 类方法参数、定位原理详细
- Android(安卓)stuio在MainActivity中运行java的main方法
- Android例子—设置Activity全屏的三种方法
- Android最佳实践之Notification、下拉刷新、内存及性能建议等
- android dialog用法汇总
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用