Подтвердить что ты не робот

Предотвращение открытия операции несколько раз.

У меня есть общее меню в моем приложении со значками. При нажатии на значок запускается действие. Есть ли способ узнать, работает ли уже работа и не запускать ее несколько раз (или из нескольких записей)? Также могу ли я привести операцию, которая находится в состоянии onPause на передней панели?

4b9b3361

Ответ 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

или

всегда открывать новое действие, очищая стек