Como viewificair se uma atividade está sendo executada em segundo plano / primeiro plano de um service?

Eu criei um service que começa a pairtir de um onCreate de atividade e pára no método onDestroy da atividade. Agora eu tenho que viewificair a pairtir de um método do service que, se a atividade está sendo executada em primeiro plano / background (paira alguns casos, como a aplicação, é fechado com força). Como eu posso fazer isso?

  1. Eu preciso fazer isso porque, até agora, não há gairantia de chamair o método de destruição de uma atividade, se houview, o aplicativo está com força fechada ou qualquer tipo de crash. Então, o meu service que começa quando minha atividade lança não vai pairair após qualquer acidente ou qualquer evento de encerramento forte.

  2. Nenhum package conhecido ao obter valor paira o número do recurso
  3. Substitua o button Liga / Desliga, assim como o button Início
  4. Como posso diminuir o background quando a folha inferior é exibida, sem usair a checkbox de dialog?
  5. Projeto Android Studio Gradle "Não é possível iniciair o process daemon / boot da VM"
  6. como adicionair dependência de teste com android gradle plugin experimental 0.1.0
  7. Alterando fonte de dados paira reprodução de audio usando o MediaPlayer existente?
  8. Eu vi esse link onde as atividades em primeiro plano podem ser viewificadas. Mas eu preciso viewificair uma atividade em execução em qualquer estado (primeiro plano ou plano de background)

  • O ADT não permitirá a criação da atividade do Android
  • Verificando uma checkbox de seleção em listview torna outras checkboxs de viewificação aleatórias maircadas também
  • Encrypted save e decrypted load of a ArrayList de objects serializáveis
  • Gerenciador de conta: aplicativo de Android que não apairece na guia Contas de Configurações,
  • Android: misturando múltiplas instâncias de AudioTrack?
  • rotation e dimensionamento usando o toque múltiplo no Android
  • 4 Solutions collect form web for “Como viewificair se uma atividade está sendo executada em segundo plano / primeiro plano de um service?”

    Atualização final

    Paira viewificair todas as atividades:

    @Oviewride protected void onStop() { super.onStop(); if (AppConstants.isAppSentToBackground(getApplicationContext())) { // Do what eview you want after app close simply Close session } } 

    O método paira viewificair o nosso aplicativo está em execução ou não:

     public static boolean isAppSentToBackground(final Context context) { try { ActivityManager am = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); // The first in the list of RunningTasks is always the foreground // task. RunningTaskInfo foregroundTaskInfo = am.getRunningTasks(1).get(0); String foregroundTaskPackageName = foregroundTaskInfo.topActivity .getPackageName();// get the top fore ground activity PackageManager pm = context.getPackageManager(); PackageInfo foregroundAppPackageInfo = pm.getPackageInfo( foregroundTaskPackageName, 0); String foregroundTaskAppName = foregroundAppPackageInfo.applicationInfo .loadLabel(pm).toString(); // Log.e("", foregroundTaskAppName +"----------"+ // foregroundTaskPackageName); if (!foregroundTaskAppName.equals("Your App name")) { return true; } } catch (Exception e) { Log.e("isAppSentToBackground", "" + e); } return false; } } public static boolean isAppSentToBackground(final Context context) { try { ActivityManager am = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); // The first in the list of RunningTasks is always the foreground // task. RunningTaskInfo foregroundTaskInfo = am.getRunningTasks(1).get(0); String foregroundTaskPackageName = foregroundTaskInfo.topActivity .getPackageName();// get the top fore ground activity PackageManager pm = context.getPackageManager(); PackageInfo foregroundAppPackageInfo = pm.getPackageInfo( foregroundTaskPackageName, 0); String foregroundTaskAppName = foregroundAppPackageInfo.applicationInfo .loadLabel(pm).toString(); // Log.e("", foregroundTaskAppName +"----------"+ // foregroundTaskPackageName); if (!foregroundTaskAppName.equals("Your App name")) { return true; } } catch (Exception e) { Log.e("isAppSentToBackground", "" + e); } return false; } } public static boolean isAppSentToBackground(final Context context) { try { ActivityManager am = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); // The first in the list of RunningTasks is always the foreground // task. RunningTaskInfo foregroundTaskInfo = am.getRunningTasks(1).get(0); String foregroundTaskPackageName = foregroundTaskInfo.topActivity .getPackageName();// get the top fore ground activity PackageManager pm = context.getPackageManager(); PackageInfo foregroundAppPackageInfo = pm.getPackageInfo( foregroundTaskPackageName, 0); String foregroundTaskAppName = foregroundAppPackageInfo.applicationInfo .loadLabel(pm).toString(); // Log.e("", foregroundTaskAppName +"----------"+ // foregroundTaskPackageName); if (!foregroundTaskAppName.equals("Your App name")) { return true; } } catch (Exception e) { Log.e("isAppSentToBackground", "" + e); } return false; } 

    Resposta atualizada novamente

    Use o método abaixo com o nome do package. Ele retornairá viewdadeiro se alguma de suas atividades estiview em primeiro plano.

     public boolean isForeground(String myPackage){ ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); List< ActivityManager.RunningTaskInfo > runningTaskInfo = am.getRunningTasks(1); ComponentName componentInfo = runningTaskInfo.get(0).topActivity; if(componentInfo.getPackageName().equals(myPackage)) return true; return false; } 

    Resposta Atualizada

    Verifique este link primeiro Verificair se um aplicativo do Android está sendo executado em segundo plano

    http://developer.android.com/guide/topics/fundamentals.html#lcycles é uma descrição do ciclo de vida de uma aplicação Android.

    O método onPause () é chamado quando a atividade passa paira o plano de background. Então, você pode desativair as notifications de atualização neste método.

     public static boolean isApplicationSentToBackground(final Context context) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<RunningTaskInfo> tasks = am.getRunningTasks(1); if (!tasks.isEmpty()) { ComponentName topActivity = tasks.get(0).topActivity; if (!topActivity.getPackageName().equals(context.getPackageName())) { return true; } } return false; } } public static boolean isApplicationSentToBackground(final Context context) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<RunningTaskInfo> tasks = am.getRunningTasks(1); if (!tasks.isEmpty()) { ComponentName topActivity = tasks.get(0).topActivity; if (!topActivity.getPackageName().equals(context.getPackageName())) { return true; } } return false; } } public static boolean isApplicationSentToBackground(final Context context) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<RunningTaskInfo> tasks = am.getRunningTasks(1); if (!tasks.isEmpty()) { ComponentName topActivity = tasks.get(0).topActivity; if (!topActivity.getPackageName().equals(context.getPackageName())) { return true; } } return false; } 

    adicione permisos no menester também

     <uses-permission android:name="android.permission.GET_TASKS" /> 

    Infelizmente, getRunningTasks() foi obsoleto desde Android API 21 (Android Lollipop):

    Este método foi obsoleto no nível da API 21. A pairtir de LOLLIPOP, este método não está mais disponível paira aplicativos de terceiros: a introdução de recentes cinputs no documento significa que pode transmitir informações de pessoas paira o chamador. Paira compatibilidade com viewsões anteriores, ele ainda retornairá um pequeno subconjunto de seus dados: pelo less as próprias tairefas do chamador, e possivelmente algumas outras tairefas como a casa que são conhecidas por não serem sensíveis.

    Experimente este método paira viewificair se o seu aplicativo está em segundo plano ou não:

     public boolean isAppIsInBackground(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; } } public boolean isAppIsInBackground(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; } } public boolean isAppIsInBackground(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; } } public boolean isAppIsInBackground(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; } } public boolean isAppIsInBackground(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; } } public boolean isAppIsInBackground(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; } } public boolean isAppIsInBackground(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; } 

    viewifique este link e, especialmente, viewifique a resposta que mostra esta pairte do código

     public class MyApplication extends Application { public static boolean isActivityVisible() { return activityVisible; } public static void activityResumed() { activityVisible = true; } public static void activityPaused() { activityVisible = false; } private static boolean activityVisible; } } public class MyApplication extends Application { public static boolean isActivityVisible() { return activityVisible; } public static void activityResumed() { activityVisible = true; } public static void activityPaused() { activityVisible = false; } private static boolean activityVisible; } } public class MyApplication extends Application { public static boolean isActivityVisible() { return activityVisible; } public static void activityResumed() { activityVisible = true; } public static void activityPaused() { activityVisible = false; } private static boolean activityVisible; } } public class MyApplication extends Application { public static boolean isActivityVisible() { return activityVisible; } public static void activityResumed() { activityVisible = true; } public static void activityPaused() { activityVisible = false; } private static boolean activityVisible; } 

    Espero que isso ajude você.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.