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

Как узнать, когда мое приложение было убито?

Мне нужно знать, когда пользователь убивает мое приложение (Force stop). Я читал жизненный цикл Android, у которого есть функции onStop и onDestroy, они связаны с каждым действием, которое пользователь заканчивает на моем приложении, но не тогда, когда пользователь заставляет останавливать или убивать мое приложение.

Есть ли способ узнать, когда пользователь убивает приложение?

4b9b3361

Ответ 1

нет способа определить, когда процесс убит. From Как определить, приостановлено или удалено приложение Android,

Когда пользователь или системная сила останавливают ваше приложение, весь процесс просто убит. Нет обратного вызова, чтобы сообщить вам, что это произошло.

Когда пользователь удаляет приложение, сначала процесс уничтожается, затем ваш файл apk и каталог данных удаляются вместе с записями в диспетчере пакетов, который сообщает другим приложениям, которые у вас есть. зарегистрирован для.

Ответ 2

Я нашел один способ сделать это.....

  • Сделайте одну услугу, подобную этой

    public class OnClearFromRecentService extends Service {
    
        @Override
        public IBinder onBind(Intent intent) {
            return null;
        }
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            Log.d("ClearFromRecentService", "Service Started");
            return START_NOT_STICKY;
        }
    
        @Override
        public void onDestroy() {
            super.onDestroy();
            Log.d("ClearFromRecentService", "Service Destroyed");
        }
    
        @Override
        public void onTaskRemoved(Intent rootIntent) {
            Log.e("ClearFromRecentService", "END");
            //Code here
            stopSelf();
        }
    }
    
  • Зарегистрируйте эту службу в Manifest.xml, как это

    <service android:name="com.example.OnClearFromRecentService" android:stopWithTask="false" />
    
  • Затем запустите эту службу в своей активности всплеска

    startService(new Intent(getBaseContext(), OnClearFromRecentService.class));
    

И теперь, когда вы очистите свое приложение от андроида недавно, этот метод onTaskRemoved() выполнит.

Ответ 3

Создать класс приложения

onCreate()
Called when the application is starting, before any activity, service, or receiver objects (excluding content providers) have been created.
onLowMemory()
This is called when the overall system is running low on memory, and actively running processes should trim their memory usage.
onTerminate()
This method is for use in emulated process environments.

Даже если вы используете Killed или Force stop, снова Android начнет ваш класс приложений

Ответ 4

Вы всегда можете использовать этот код:

protected void onCreate(Bundle savedInstanceState) {
//...
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
        @Override
        public void uncaughtException(Thread thread, Throwable ex) {
        //inform yourself that the activity unexpectedly stopped
        //or
        YourActivity.this.finish();
        }
    });
//...
}

Ответ 5

У меня есть альтернативная идея. У меня такая же проблема, как и у вас. Невысокие методы, а не проблема fix.my: "Я хочу очистить все сохраненные данные всего приложения, когда пользователь полностью закрывает приложение"

Итак, я добавил clear() и очистил сохраненные данные (от общего предпочтения или tinyDB) в классе Application.