この状況ではsingleTask
、manifest.xmlまたはアクティビティのonResume()
&onDestroy()
メソッドのフラグで、2つのアプローチのいずれかを使用します。
以下のために最初の溶液:私が使用することを好むsingleTask
のではなく、マニフェストにおける活性についてsingleInstance
用い通り、singleInstance
私はいくつかの場面において活性が実行中のアプリケーションに2つの別々のアプリケーション・ウィンドウを有すること結果そのもののための新たな独立したインスタンスを作成することを考え出しbcakgroundに加えて、ユーザーがアプリビューを開いて再開するアプリを選択すると、ユーザーエクスペリエンスが非常に低下する余分なメモリ割り当てに加えて したがって、より良い方法は、次のようにmanifest.xmlでアクティビティを定義することです。
<activity
android:name=".MainActivity"
android:launchMode="singleTask"</activity>
ここでアクティビティの起動モードを確認できます。
以下のために第二ソリューション、あなただけの、たとえば、静的変数または設定変数を定義する必要があります。
public class MainActivity extends Activity{
public static boolean isRunning = false;
@Override
public void onResume() {
super.onResume();
// now the activity is running
isRunning = true;
}
@Override
public void onDestroy() {
super.onDestroy();
// now the activity will be available again
isRunning = false;
}
}
反対側からこのアクティビティを開始する場合は、次のことを確認してください。
private void launchMainActivity(){
if(MainActivity.isRunning)
return;
Intent intent = new Intent(ThisActivity.this, MainActivity.class);
startActivity(intent);
}