Activity启动模式记录

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为standard
	B为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

	@Override
	protected 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, "没有时间");
		}
	}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值