从android中的最新列表中删除应用程序时会调用哪个活动? [英] Which activity is called when app removed from recent list in android?
问题描述
android项目中有几个活动.但是,当从应用程序列表中删除该应用程序时,肯定会调用哪个活动.
我已经检查了以下问题.但是所有这些问题都是针对一项活动或服务的
如何在以下情况下处理代码应用程序是通过在android中刷卡杀死的?
我也陷入了非常相似的场景,在该场景中,我需要跟踪用户从最近的列表中删除了该应用程序的活动,所以转到了重点>
第1步:
创建类ApplicationLifeCycleHandler
并实现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
}
}
}
现在:创建类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屋!