У цій ситуації я скористаюся одним із двох наближених, singleTask
у manifest.xml АБО прапором у Activity onResume()
&onDestroy()
методів.
Для першого рішення: я віддаю перевагу використовувати singleTask
для активності в маніфесті, а не singleInstance
, згідно з використанням, singleInstance
я з'ясував, що в деяких випадках діяльність створює новий окремий екземпляр, що призводить до того, що у запущених програмах є два окремі вікна програм у bcakground та крім додаткових виділень пам'яті, що призведе до дуже поганого користувацького досвіду, коли користувач відкриє перегляд програм, щоб вибрати якусь програму для відновлення. Отже, кращий спосіб - визначити активність у маніфесті.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();
isRunning = true;
}
@Override
public void onDestroy() {
super.onDestroy();
isRunning = false;
}
}
а з іншого боку, коли ви хочете запустити цю діяльність, просто поставте галочку:
private void launchMainActivity(){
if(MainActivity.isRunning)
return;
Intent intent = new Intent(ThisActivity.this, MainActivity.class);
startActivity(intent);
}