guide - android onnewintent




Come sapere quando la mia app è stata uccisa? (4)

Crea una classe di applicazione

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.

Anche se sei stato sottoposto all'applicazione Killed o Force Stop, ancora una volta Android avvierà la tua classe Application

Devo sapere quando l'utente uccide la mia app (arresto forzato). Ho letto il ciclo di vita di Android, che ha le onStop() e onDestroy() , queste sono legate a ciascuna attività che l'utente termina sulla mia app, ma non quando l'utente impone di interrompere o uccidere la mia app.

C'è un modo per sapere quando l'utente uccide l'app?


Dopo aver analizzato questo problema, ho trovato una soluzione che potrebbe aiutarti:

Tutto quello che devi fare è controllare il metodo onDestroy di BaseActivity che viene esteso da tutte le tue attività, sia che l'ultima attività in esecuzione dello stack provenga dal tuo pacchetto o meno con il seguente codice:

ActivityManager activityManager = (ActivityManager) getSystemService( ACTIVITY_SERVICE );

List<ActivityManager.RunningTaskInfo> taskList = activityManager.getRunningTasks( 10 );

if ( !taskList.isEmpty() )
    {
     ActivityManager.RunningTaskInfo runningTaskInfo = taskList.get( 0 );
      if ( runningTaskInfo.topActivity != null && 
              !runningTaskInfo.topActivity.getClassName().contains(
                    "com.my.app.package.name" ) )
         {
        //You are App is being killed so here you can add some code
         }
    }

Ho un'idea alternativa. Ho lo stesso problema come te.verso i metodi non fix.my problema: "Voglio cancellare tutti i dati salvati l'intera app, quando l'utente chiude completamente l'app"

Quindi, ho aggiunto clear () e cancella i dati salvati (dalla preferenza condivisa o tinyDB) nella classe Application.


Puoi sempre usare questo codice:

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();
        }
    });
//...
}




android-lifecycle