반응형

 

백그라운드 상태를 확인하는방법 1

 

1. Application class 를 상속 받고 ActivityLicycleCallback을 등록해준다.

public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        setupLifecycleObserver();
    }
    
    private void setupAppLifeCycleTracker(){
       registerActivityLifecycleCallbacks(new AppLifeCycleTracker());
    }
 }

 

2. 등록한 started , stopped method에 숫자를 추가해 자신의 액티비티 상황에 맞춰 숫자를 활용해준다.

  /*********************************
     inner class AppLifeCycleTracker
     **********************************/
    class AppLifeCycleTracker implements ActivityLifecycleCallbacks {

		public int numStarted = 0;

        @Override
        public void onActivityCreated(Activity activity, Bundle savedInstanceState) {

        }

        @Override
        public void onActivityStarted(Activity activity) {
            if (numStarted == 0){
                //went to foreground
                
            }
            numStarted++;
        }

        @Override
        public void onActivityResumed(Activity activity) {

        }

        @Override
        public void onActivityPaused(Activity activity) {

        }

        @Override
        public void onActivityStopped(Activity activity) {
            numStarted--;
            if (numStarted == 0){
                //went to background
               
            }

        }

        @Override
        public void onActivitySaveInstanceState(Activity activity, Bundle outState) {

        }

        @Override
        public void onActivityDestroyed(Activity activity) {

        }
    }// end AppLifeCycleTracker

 

3. manifest - > application - > name에 클래스명 넣기.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <application
        android:allowBackup="false"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:name=".App">
    ....    
           </application>
....
</manifest>

 

백그라운드 상태를 확인하는법 2

 

1. gradle에 lifecycle 라이브러리들을 추가해준다.

dependencies {
	...
    //lifecycle
    implementation "androidx.lifecycle:lifecycle-runtime:2.0.0"
    implementation "androidx.lifecycle:lifecycle-extensions:2.0.0"
    ...
}

2. Application class 를 상속 받고 LifeCycleObserver를 추가해준다.

public class App extends Application {

	private LifecycleObserver lifecycleListener = new CycleListener();
    
    @Override
    public void onCreate() {
        super.onCreate();
        setupLifecycleObserver();
    }
    
    private void setupLifecycleObserver(){
        ProcessLifecycleOwner.get().getLifecycle().addObserver(lifecycleListener);
    }
 }

3. LifeCycleObserver는 아래와 같으며 @OnLicycleEvent 에노테이션으로 현재 상태를 나타내준다.

    class CycleListener implements LifecycleObserver{
    
        @OnLifecycleEvent(Lifecycle.Event.ON_START)
        public void onMoveToFoground(){
       		 // Moving to Foground…
           
        }

        @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
        public void onMoveToBackground() {
			// Moving to background…
        }
    } // end LifecycleObserver

 

 

 

추가로 ..

안드로이드의 LifeCycleObserver.

    class CycleListener implements LifecycleObserver{
    
        @OnLifecycleEvent(Lifecycle.Event.ON_START)
        public void onMoveToFoground(){
       		 // Moving to Foground…
           
        }

        @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
        public void onMoveToBackground() {
			// Moving to background…
        }
    } // end LifecycleObserver

IOS의 AppDelegate func.

func applicationDidEnterBackground(_ application: UIApplication) {

}


func applicationWillEnterForeground(_ application: UIApplication) {

}    

위 두개의 코드와 같이 안드로이드도 백그라운드 관리를 사용자 임의대로 설정하는 것이 아닌 점점 앱 메스드를 만들어 제한하고 메모리관리에 신경쓰는 부분이 아닐까 생각이든다.

 

점점 ios의 장점을 따라가려고 하는것같다. flutter때문인가 .. ?

반응형

+ Recent posts