노력과 삽질 퇴적물

안드로이드: 액티비티 생명주기 & 물리버튼 본문

프로그래밍note/언어. C# 계열

안드로이드: 액티비티 생명주기 & 물리버튼

MTG 2016. 7. 7. 03:34

다음과 같은 상황에 활용해볼만한 예시입니다.

> 홈버튼/파워버튼 사용시 앱종료 같은 추가 동작을 구현

> 슬립모드->액티비티 실행 & (화면on상태에서)액티비티 실행같은 변수작용





액티비티 라이프 사이클에 포함되는 함수들에 로그를 찍어보면 아래와 같은 실행순서가 됩니다.


 슬립모드->액티비 실행

 (화면이 켜진상태에서)액티비티 실행

OnCreate

OnStart

OnResume

OnPause

OnStop//액티비티 출력처리 완료.


(홈버튼)

OnRestart

OnStart


OnResume

OnPause

OnStop

OnCreate

OnStart

OnResume//액티비티 출력처리 완료.








(홈버튼)

OnPause

OnStop

(OnDestroy)

로그상 OnRestart, OnStart등에서 추가적으로 플래그값을 조절하면 좀더 다양한 제어가 가능하지 않을까 싶습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    ... ... ...
    ... ... ...
    ... ... ...
    protected override void OnUserLeaveHint()
     {
         //홈버튼에 따른 플래그값 혹은 제어
         base.OnUserLeaveHint();
     }
 
    public override bool OnKeyDown(Keycode keyCode, KeyEvent e)
    {
        if (keyCode == Keycode.Back)
        {
            this.Finish();
        }
        else if (keyCode == Keycode.Sleep)
        {
            this.Finish();
        }
        else if (keyCode == Keycode.Power)
        {
            this.Finish();
        }
        //Console.WriteLine("OnKeyDown. " + keyCode.ToString());
 
        return base.OnKeyDown(keyCode, e);
    }
    ... ... ...
    ... ... ...
    ... ... ...
}
cs