0

En utilisant onPause(), je peux vérifier si une activité passe en arrière-plan ou non. Mon problème est ce onPause() est appel chaque fois même si je vais à une autre activité de cette activité. Donc, mon principal problème est, si je minimise l'application en appuyant sur le bouton home, je veux supprimer l'application du gestionnaire de tâches et ce code est écrit dans chaque activité lorsque l'application va à l'arrière-plan sans utiliser onPause().Comment détecter l'application est minimisée en appuyant sur la touche d'accueil?

Mon extrait de code est ci-dessous ->

@Override 
public void onPause() { 
    if (isBackgroundRunning(this)){ 
     ExitActivity.exitApplication(getApplicationContext()); 
    } 
    super.onPause(); 
} 

public static boolean isBackgroundRunning(Context context) { 
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
    List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses(); 
    for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) { 
     if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { 
      for (String activeProcess : processInfo.pkgList) { 
       if (activeProcess.equals(context.getPackageName())) { 
        //If your app is the process in foreground, then it's not in running in background 
        return true; 
       } 
      } 
     } 
    } 

    return true; 
} 

ExitActivity est utilisé pour supprimer l'application de gestionnaire de tâches.

public class ExitActivity extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    finish(); 
} 

public static void exitApplication(Context context) { 
    Intent intent = new Intent(context, ExitActivity.class); 

    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 

    context.startActivity(intent); 
} 

}

j'ai vu la plupart des questions à ce sujet, mais ne peut pas trouver la solution. Aidez-moi, s'il vous plaît. Merci d'avance :)

+0

vous ne pouvez pas trouver une solution, car il n'y a pas de solution, vous ne pouvez pas écouter les événements de bouton d'accueil pour des raisons de sécurité. Pourquoi avez-vous besoin de tuer votre application de toute façon? – tyczj

+0

@tyczj En fait, je travaille sur l'application Santé qui a des données confidentielles, donc nous avons utilisé 2 heures de gestion de session à partir de backend services, quand l'application est minimisée et 3 heures plus tard remplir tous les détails, puis soumettre après l'appel de webservice qu'il a eu la session est invalide. –

+1

Il suffit ensuite de créer un horodatage d'expiration dans les préférences partagées et de le mettre à jour à l'heure actuelle + 2 heures dans chaque onResume puis de vérifier l'heure dans onCreate. si c'est passé le temps commencer l'application sur – tyczj

Répondre

-1

Essayez d'appeler finish() dans votre méthode onPause() dans l'activité parents/lanceurs de votre application. Cela devrait tuer l'application lorsque l'utilisateur appuie sur le bouton d'accueil

+0

C'est une très mauvaise idée. Ça ne marche pas dans mon cas. –