Bu durum için, singleTask
manifest.xml'de yaklaşılan ikisinden birini VEYA Activity's onResume()
& onDestroy()
method'larında sırasıyla bir bayrak seçeceğim.
İçin ilk çözümü: Ben kullanmayı tercih singleTask
ziyade Manifestte aktivite için singleInstance
kullanma gereği, singleInstance
bazı durumlarda aktivite çalışan uygulamalardaki iki ayrı uygulama penceresini olması sonucu kendisi için yeni bir ayrı bir örneğini oluşturarak anladım bcakground'da ve kullanıcı devam ettirmek için bazı uygulamaları seçmek için uygulamalar görünümünü açtığında çok kötü bir Kullanıcı Deneyimi ile sonuçlanacak ekstra bellek ayırmalarının yanı sıra. Bu nedenle, daha iyi bir yol, aşağıdaki gibi manifest.xml'de tanımlanmış aktiviteye sahip olmaktır:
<activity
android:name=".MainActivity"
android:launchMode="singleTask"</activity>
etkinlik başlatma modlarını buradan kontrol edebilirsiniz .
İçin ikinci çözümü, sadece örneğin statik bir değişken veya bir tercih değişkeni tanımlamak zorunda:
public class MainActivity extends Activity{
public static boolean isRunning = false;
@Override
public void onResume() {
super.onResume();
isRunning = true;
}
@Override
public void onDestroy() {
super.onDestroy();
isRunning = false;
}
}
ve diğer taraftan bu aktiviteyi başlatmak istediğinizde şunları kontrol edin:
private void launchMainActivity(){
if(MainActivity.isRunning)
return;
Intent intent = new Intent(ThisActivity.this, MainActivity.class);
startActivity(intent);
}