Activity起動モード記録

2279 ワード

Android:launchMode="standard":この起動モードでは、startActivity()ごとに、メモリに新しいインスタンスが作成されます.
Android:launchMode="singleTop":スタックの先端にactivityの参照が存在する場合、もう一度startActivity()はonCreateで新しいインスタンスを作成するのではなく、存在するインスタンスを多重化してonNewIntent()メソッドを呼び出します.
Android:launchMode="singleTask":スタック全体にactivityの参照が存在する限り、もう一度startActivity()はonCreateで新しいインスタンスを作成するのではなく、存在するインスタンスを多重化してonNewIntent()メソッドを呼び出します.
Android:launchMode="singleInstance":最初に作成すると、タスクスタックが別に開き、新しいスタックには参照が1つしか存在しません.もう一度startActivity()はonCreateではなく、存在するインスタンスを多重化してonNewIntent()メソッドを呼び出します.
startActivity ForResult()の方法を見てみましょう:(親測)
プレゼンテーション:A startActivity ForResult()が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でなければ、onActivity Result方式で戻りデータを取得できません.写真を保存した後、SDカードから画像を取得できます.
setResult()メソッドはonPause、onDestory()では無効です.他のライフサイクルメソッドでは有効です.
戻るキーを押すたびにonDestory()が呼び出されます.
これを呼び出します.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, "    ");
		}
	}