How to detect when an Android app goes to the background and come back to the foreground

后端 未结 30 1312
独厮守ぢ
独厮守ぢ 2020-11-22 00:56

I am trying to write an app that does something specific when it is brought back to the foreground after some amount of time. Is there a way to detect when an app is sent to

30条回答
  •  执念已碎
    2020-11-22 01:11

    Correct Answer here

    Create class with name MyApp like below:

    public class MyApp implements Application.ActivityLifecycleCallbacks, ComponentCallbacks2 {
    
        private Context context;
        public void setContext(Context context)
        {
            this.context = context;
        }
    
        private boolean isInBackground = false;
    
        @Override
        public void onTrimMemory(final int level) {
            if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) {
    
    
                isInBackground = true;
                Log.d("status = ","we are out");
            }
        }
    
    
        @Override
        public void onActivityCreated(Activity activity, Bundle bundle) {
    
        }
    
        @Override
        public void onActivityStarted(Activity activity) {
    
        }
    
        @Override
        public void onActivityResumed(Activity activity) {
    
            if(isInBackground){
    
                isInBackground = false;
                Log.d("status = ","we are in");
            }
    
        }
    
        @Override
        public void onActivityPaused(Activity activity) {
    
        }
    
        @Override
        public void onActivityStopped(Activity activity) {
    
        }
    
        @Override
        public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
    
        }
    
        @Override
        public void onActivityDestroyed(Activity activity) {
    
        }
    
        @Override
        public void onConfigurationChanged(Configuration configuration) {
    
        }
    
        @Override
        public void onLowMemory() {
    
        }
    }
    

    Then, everywhere you want (better first activity launched in app), add the code below:

    MyApp myApp = new MyApp();
    registerComponentCallbacks(myApp);
    getApplication().registerActivityLifecycleCallbacks(myApp);
    

    Done! Now when the app is in the background, we get log status : we are out and when we go in app, we get log status : we are out

提交回复
热议问题