마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 Timer task 관련 질문드립니다.

0 추천

안녕하세요 이번에 제가 작성하고 있는 코드는 매 3초정도의 텀으로 액션바가 show()상태라면 hide()함수를 호출하게끔하는 그런 코드를 작성하고있습니다. 스레드를 활용하여 작업중인데 조건문에는 정말 잘 들어옵니다. 그렇지만 해당 조건일경우 ActionBar.hide(); 함수 호출시 자꾸 프로그램이 죽는데 조언을 구하고 싶습니다.

@Override
public void run() {
    ActionBar myActionBar = getSupportActionBar();
    int sec = 0;
    while (true) {
        sec++;
        try{
            Thread.sleep(1000);
            if(sec > 3) {
                if(myActionBar.isShowing()) {
                    Log.i("액션바가 보이는 상태 : ", "good");
                    //myActionBar.hide(); -> program down
                }
                else{Log.i("액션바가 보이지 않는 상태 : ", "bad");}
                sec = 0;
            }
        }catch (Exception ex){ex.printStackTrace();}
        Log.i("경과된 시간 : ", Integer.toString(sec));
    }
}
익명사용자 님이 2017년 3월 5일 질문
2017년 3월 5일 수정
앱이 죽을 때 나오는 로그도 같이 올리세요.
https://susemi99.gitbooks.io/howto-for-beginners/content/chapter2.html

1개의 답변

0 추천
CrashReport도 같이 올리시면 좋겠지만 제 생각에는 메인 Looper관련 오류가 아닐까 생각이 됩니다.

UI관련 작업은 메인스레드에서 하셔야 합니다.

hide 작업을 핸들러를 사용해서 메인스레드로 넘기세요.
Development Guy (70,570 포인트) 님이 2017년 3월 6일 답변
...