Как знать, когда app закрывается?

Я хочу знать, возможно ли знать, когда какой-то app, который используется, прекращают использовать: "он закрывается". Я нашел метод, но только служи для того, чтобы знать, когда мой app закрывается, следовательно не подает меня, но я показываю их ему:

public void onTrimMemory(final int level) {
if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) {
    //SCREEN IS NOT SHOWING
}

Вопроса: https://stackoverflow.com / questions / 33818406/how-to-detected-if-application-is-closed

3
задан 23.05.2017, 15:39
2 ответа

Чтобы определять, что приложения работают в Android.

Используется ActivityManager. RunningAppProcessInfo, например мы можем получать, что приложения выполняют, посредством BroadcastReciber или click в кнопку называть этот метод, который он определяет, что приложения работают (он печатает имя процесса);

public void obtenerAplicaciones(Context context){
    ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
    List l = am.getRunningAppProcesses();
    Iterator i = l.iterator();
    PackageManager pm = context.getPackageManager();
    while(i.hasNext()) {
        ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo)(i.next());
        try {
            CharSequence c = pm.getApplicationLabel(pm.getApplicationInfo(info.processName, PackageManager.GET_META_DATA));
            Log.d("Aplicaciones", c.toString());
            //runningApplications.add(c.toString());
        }catch(Exception e) {
            Log.d("Aplicaciones", e.getMessage());
        }
    }
}

Важно комментировать, что, если это приложение в "Background" считается активным, удаляешь ли ты ее полностью уже он не появился бы в списке.

introducir la descripción de la imagen aquí


Чтобы определять, если приложение работает в устройстве Android.

Чтобы это определять ты можешь использовать также ActivityManager, как пример метод, который получает контекст и определяет, если приложение установлено:

private boolean ejecutandoAplicacion(Context context, String packagename) {
    ActivityManager activityManager = (ActivityManager) this.getSystemService( ACTIVITY_SERVICE );
    List<ActivityManager.RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses();
    for(int i = 0; i < procInfos.size(); i++)
    {
        if(procInfos.get(i).processName.equals(packagename))
        {
            return true; //Esta activa.
        }
    }
    return false; //Esta cerrada.
}

пример как называть предыдущий метод:

  if (ejecutandoAplicacion(getApplicationContext(), "com.mydominio.stackoverflow")) {
     Log.i("Aplicacion", "La aplicación esta ejecutandose!");
  } else {
    Log.i("Aplicacion", "La aplicación esta cerrada.");
 }

Он имеет по отношению к себе то же рассуждение, приложение в "background" считается, что эта включает, это, если операционная система не закрыла ее.

3
ответ дан 24.11.2019, 12:02

Восполни запас это этот код:

        ActivityManager activityManager = (ActivityManager)this.getSystemService( ACTIVITY_SERVICE );
    java.util.List<RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses();
    for(int i = 0; i < procInfos.size(); i++)
    {
        if(procInfos.get("Aqui se coloca el nombre de paquete de la aplicacion").processName.equals(i3)) 
        {
           //Aquí se obtiene si es que se esta ejecutando
        }else{
           //Aquí se obtiene que no se esta utilizando
        }
    }
2
ответ дан 24.11.2019, 12:02