FLAG_ACTIVITY_SINGLE_TOP
のフラグを付けてstartActivity
で起動すると、スタック最上位でActivityを起動している場合は新しいインスタンスを作らないようにできますが、起動後のActivityでgetIntent
してintentの情報を取り出そうとしても、セットしたはずの情報が取り出せません。
A_Activity.java
@Override
protected void onResume() {
Intent intent = getIntent();
intent.getStringExtra(...); // ②
}
B_Acitvity.java
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(this, A_Activity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra(...); // ①
startActivity(intent);
finish();
}
}
※ A_Activity→B_Activity→A_Activity と呼び出されたとき、①でセットした値が②で取り出せない
この場合、onNewIntent
メソッドを使えばセットした情報を取り出すことができます。
参考:Activity#onNewIntent
A_Acitivity.java
@Override
protected void onNewIntent(Intent intent) {
intent.getStringExtra(...); // セットした値が取り出せる
}
ActivityのlaunchMode
にsingleTop
、singleTask
、singleInstance
を指定した場合も同様だそうです。
こちらの情報を参考にさせていただきました:http://into.cocolog-nifty.com/pulog/2011/12/android048onnew.html