반응형
백그라운드 상태를 확인하는방법 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때문인가 .. ?
반응형
'AOS' 카테고리의 다른 글
(안드로이드) permission 확인 간단하게 만들어보기 (0) | 2020.01.08 |
---|---|
(안드로이드) HttpsURLConnection 그리고 AsyncTask .. (0) | 2020.01.02 |
[안드로이드]webview 관련정리 (0) | 2019.12.23 |
[안드로이드]특정 기기에서 갑자기 종료되는 현상 (0) | 2019.12.23 |
[안드로이드]오늘 하루 안보기 (0) | 2019.12.21 |