У меня есть общее меню в моем приложении со значками. При нажатии на значок запускается действие. Есть ли способ узнать, работает ли уже работа и не запускать ее несколько раз (или из нескольких записей)? Также могу ли я привести операцию, которая находится в состоянии onPause на передней панели?
Предотвращение открытия операции несколько раз.
Ответ 1
Используйте это:
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
при запуске Activity
.
из документация:
Если задано в Intent, переданном Context.startActivity(), этот флаг будет привести к тому, что запущенная деятельность будет перенесена на передний план если он уже запущен.
Ответ 2
В объявлении активности в файле манифеста добавьте тег android:launchMode="singleInstance"
Ответ 3
Я отлично справился с этим, выполнив следующее. В активности или услуге вызывающего абонента (даже из другого приложения)
Intent launchIntent = getPackageManager().getLaunchIntentForPackage(APP_PACKAGE_NAME);
//the previous line can be replaced by the normal Intent that has the activity name Intent launchIntent = new Intent(ActivityA.this, ActivityB.class);
launchIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(launchIntent);
и в манифесте активности приемника (я хочу предотвратить открытие дважды)
<activity android:name=".MainActivity"
android:launchMode="singleTask"
>
Ответ 4
создайте экземпляр своей деятельности, который вы не хотите запускать несколько раз, например
Class ExampleA extends Activity {
public static Activity classAinstance = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
classAinstance = this;
}
}
Теперь, когда бы вы не захотели перекрестно проверить, я имею в виду, что он не запускается несколько раз, проверьте, как это
if(ExampleA.classAinstance == null) {
"Then only start your activity"
}
Ответ 5
Добавьте это в определение Activity
в Androidmanifest.xml
...
android:launchMode = "singleInstance"
Ответ 6
Просто используйте
Intent i = new Intent(ActivityA.this, ActivityB.class);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
Ответ 7
добавить это
@Override
protected void onDestroy() {
super.onDestroy();
finish();
}
или
startmode для singleTask/singlemode
или
всегда открывать новое действие, очищая стек