Untuk situasi ini, saya akan memilih salah satu dari dua pendekatan, singleTask
di manifest.xml ATAU sebuah tanda di Aktivitas onResume()
&onDestroy()
masing-masing metode .
Untuk solusi pertama : Saya lebih suka menggunakan singleTask
untuk aktivitas dalam manifes daripada singleInstance
, sesuai penggunaan, singleInstance
saya menemukan bahwa dalam beberapa kesempatan aktivitas membuat instance terpisah baru untuk dirinya sendiri yang menghasilkan dua jendela aplikasi terpisah di aplikasi yang sedang berjalan di bcakground dan di samping alokasi memori tambahan yang akan menghasilkan Pengalaman Pengguna yang sangat buruk saat pengguna membuka tampilan aplikasi untuk memilih beberapa aplikasi untuk dilanjutkan. Jadi, cara yang lebih baik adalah dengan menetapkan aktivitas di manifest.xml seperti berikut:
<activity
android:name=".MainActivity"
android:launchMode="singleTask"</activity>
Anda dapat memeriksa mode peluncuran aktivitas di sini .
Untuk solusi kedua , Anda hanya perlu menentukan variabel statis atau variabel preferensi, misalnya:
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;
}
}
dan dari sisi lain ketika Anda ingin meluncurkan aktivitas ini, cukup centang:
private void launchMainActivity(){
if(MainActivity.isRunning)
return;
Intent intent = new Intent(ThisActivity.this, MainActivity.class);
startActivity(intent);
}