从android中的最新列表中删除应用程序时会调用哪个活动? [英] Which activity is called when app removed from recent list in android?

查看:97
本文介绍了从android中的最新列表中删除应用程序时会调用哪个活动?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

android项目中有几个活动.但是,当从应用程序列表中删除该应用程序时,肯定会调用哪个活动.

我已经检查了以下问题.但是所有这些问题都是针对一项活动或服务的

如何在以下情况下处理代码应用程序是通过在android中刷卡杀死的?

如何检测从最近列表中删除的应用程序

我关闭一个应用

解决方案

我也陷入了非常相似的场景,在该场景中,我需要跟踪用户从最近的列表中删除了该应用程序的活动,所以转到了重点

第1步:

创建类ApplicationLifeCycleHandler并实现Application.ActivityLifecycleCallbacksComponentCallbacks2:

public class ApplicationLifeCycleHandler implements Application.ActivityLifecycleCallbacks, ComponentCallbacks2 {
  private static final String TAG = "AppLifeCycleShareTime";
  private static boolean isInBackground = false;

  @Override
  public void onActivityCreated(Activity activity, Bundle bundle) {
    Log.d( TAG  , "onActivityCreated");
  }

  @Override
  public void onActivityStarted(Activity activity) {
    Log.d( TAG  , "onActivityStarted");
  }

  @Override
  public void onActivityResumed(Activity activity) {
    Log.d(  TAG , "onActivityResumed : " + ShareTime.currentActivity.getClass().getName());
    if(isInBackground){
      Log.d(TAG, "app went to foreground");
      isInBackground = false;
    }
  }

  @Override
  public void onActivityPaused(Activity activity) {
    Log.d(  TAG  , "onActivityPaused : " + activity.getClass().getName());
  }

  @Override
  public void onActivityStopped(Activity activity) {
    Log.d( TAG , "onActivityStopped : " + activity.getClass().getName());
  }

  @Override
  public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
    Log.d(  TAG  , "onActivitySaveInstanceState");
  }

  @Override
  public void onActivityDestroyed(Activity activity) {
    Log.d( TAG , "onActivityDestroyed Parent : " + activity.getClass().getName());
  }

  @Override
  public void onConfigurationChanged(Configuration configuration) {
    Log.d( TAG , "onConfigurationChanged");
  }

  @Override
  public void onLowMemory() {
    Log.d( TAG , "onLowMemory");
  }

  @Override
  public void onTrimMemory(int i) {
    Log.d( TAG  , "onTrimMemory");
    if(i == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN){
      Log.d(TAG, "app went to background");
      isInBackground = true
    }
  }
}

现在:创建类MyApplication并将其扩展到Application:

public class MyApplication extends Application {
  public static FileMetadata file;

  @Override
  public void onCreate() {
    super.onCreate();
    ApplicationLifeCycleHandler handler = new ApplicationLifeCycleHandler();
    registerActivityLifecycleCallbacks(handler);
    registerComponentCallbacks(handler);
  }
}

第3步: 打开清单文件,然后将android:name="MyApplication"添加到应用程序标记中.

第4步: 查看onActivityDestroyed的日志,您将知道将被破坏的活动的名称.

There are several activities in the android project. But which activity will surely get called when the app is removed from the app list.

I have checked following questions. But all these questions are specific to an activity or service

How to handle code when app is killed by swiping in android?

How to detect app removed from the recent list

What method is being called when I close an app

解决方案

I also got stuck in very much similar scenario, where I need to trace from which activity the user removed app from recent list, So moving to the point

Step 1:

Create Class ApplicationLifeCycleHandler and implement Application.ActivityLifecycleCallbacks, ComponentCallbacks2:

public class ApplicationLifeCycleHandler implements Application.ActivityLifecycleCallbacks, ComponentCallbacks2 {
  private static final String TAG = "AppLifeCycleShareTime";
  private static boolean isInBackground = false;

  @Override
  public void onActivityCreated(Activity activity, Bundle bundle) {
    Log.d( TAG  , "onActivityCreated");
  }

  @Override
  public void onActivityStarted(Activity activity) {
    Log.d( TAG  , "onActivityStarted");
  }

  @Override
  public void onActivityResumed(Activity activity) {
    Log.d(  TAG , "onActivityResumed : " + ShareTime.currentActivity.getClass().getName());
    if(isInBackground){
      Log.d(TAG, "app went to foreground");
      isInBackground = false;
    }
  }

  @Override
  public void onActivityPaused(Activity activity) {
    Log.d(  TAG  , "onActivityPaused : " + activity.getClass().getName());
  }

  @Override
  public void onActivityStopped(Activity activity) {
    Log.d( TAG , "onActivityStopped : " + activity.getClass().getName());
  }

  @Override
  public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
    Log.d(  TAG  , "onActivitySaveInstanceState");
  }

  @Override
  public void onActivityDestroyed(Activity activity) {
    Log.d( TAG , "onActivityDestroyed Parent : " + activity.getClass().getName());
  }

  @Override
  public void onConfigurationChanged(Configuration configuration) {
    Log.d( TAG , "onConfigurationChanged");
  }

  @Override
  public void onLowMemory() {
    Log.d( TAG , "onLowMemory");
  }

  @Override
  public void onTrimMemory(int i) {
    Log.d( TAG  , "onTrimMemory");
    if(i == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN){
      Log.d(TAG, "app went to background");
      isInBackground = true
    }
  }
}

Now: Create Class MyApplication and extend it to Application:

public class MyApplication extends Application {
  public static FileMetadata file;

  @Override
  public void onCreate() {
    super.onCreate();
    ApplicationLifeCycleHandler handler = new ApplicationLifeCycleHandler();
    registerActivityLifecycleCallbacks(handler);
    registerComponentCallbacks(handler);
  }
}

Step 3 : Open Manifest File and Add android:name="MyApplication" to application Tag.

Step 4 : Check Logs of onActivityDestroyed and you will know the name of activity which is getting destroyed.

这篇关于从android中的最新列表中删除应用程序时会调用哪个活动?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆