0

ich wissen müssen, zu handhaben, wenn der Benutzer meinen Android-App in dem Hintergrund senden und sie dann in dem Vordergrund bringen, wie zu erkennen, wenn Android App im Hintergrund und Vordergrund einige Codes

, wenn der Benutzer App Hintergrund sendet I-Server durchführen soll rufen und wenn wieder in den Vordergrund muss ich

ich es

public class MyApplication implements Application.ActivityLifecycleCallbacks { 

@Override 
    public void onActivityStopped(final Activity activity) { 

// my logic goes here 
} 
} 

auf folgende Weise umgesetzt haben einige Daten löschen, aber diese Art und Weise eine Menge ANRs im Hintergrund machen, und wenn ich legte meine Logik in AsyncTask es funktioniert nicht und es schließt auch ein pp im Hintergrund

kann jemand Beratung mir, wie meine Anforderung auf eine andere Weise zu erfüllen, ohne Erzeugung von ANR

+0

[Verwenden 'ProcessLifecycleOwner'] (https://developer.android.com/reference/android/arch/lifecycle/ProcessLifecycleOwner.html) aus dem Architekturkomponenten. – CommonsWare

Antwort

0

Verwendung:

@Override 
    public void onStop() 
    { 
     super.onStop(); 
     // Do your stuff here when you are stopping your activity 
    } 

@Override 
    public void onResume() 
    { 
     super.onResume(); 
     // Do your stuff here when comes back to activity 
    } 

Dies kann auch arbeiten, wenn Sie das Gerät sperren OnStop aufgerufen wird und wenn Sie öffnen onResume wird aufgerufen.

+0

Das wird funktionieren. Wenn es dann kumpel bitte nicht vergessen, diesen Beitrag als Antwort zu markieren. Happy coding bro :) –

-1
private boolean isAppInBackground(Context context) { 
     boolean isInBackground = true; 
     ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
     if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) { 
      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())) { 
          isInBackground = false; 
         } 
        } 
       } 
      } 
     } else { 
      List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 
      ComponentName componentInfo = taskInfo.get(0).topActivity; 
      if (componentInfo.getPackageName().equals(context.getPackageName())) { 
       isInBackground = false; 
      } 
     } 

     return isInBackground; 
    } 

und fügen Sie unter Erlaubnis in manifest

<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
+0

Downvote .. warum ?? –

Verwandte Themen