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

BraodcastReceiver의 onReceive에서 startActivity가 먹히지 않을 때가 있습니다.

0 추천
public class ScreenReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){
            Intent i = new Intent(context, LockActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            try {
                context.startActivity(i);
                Toast.makeText(context, "SCREEN OFF", Toast.LENGTH_SHORT).show();
            }catch (Exception e){
                Toast.makeText(context, "exception catch", Toast.LENGTH_SHORT).show();
            }
        }
    }
}

 

제가 잠금화면을 구현하려고 작업을 하고 있는데요.

위의 코드와 같이 짜서 화면이 꺼졌을 때 잠금화면을 열고자 합니다.

서비스는 죽을때마다 다시 살려주는 작업을 해놔서 늘 살아있는 상태이구요.

화면을 껏다 키면 잠금화면이 뜨기도 합니다.

 

문제는, 서비스도 살아있고 브로드캐스트리시버가 화면이 꺼짐을 감지도 하지만

context.startActivity가 먹히지 않는 때가 있다는 겁니다

주로 시간이 좀 지나거나 다른어플을 좀만 사용해도 그렇게 됩니다.

위의 코드처럼 토스트메시지를 띄워서 서비스가 살아있는지, 브로드캐스트 리시버가 잘 동작하는지 확인해도

그 둘에는 문제가 없구요.

그렇다고 context.startActivity에서 에러를 발생시키지도 않는데, 왜 먹히지 않는지 모르겠습니다 ㅠ

어떻게 해결할 수 있을까요?

wlstn812 (290 포인트) 님이 2020년 4월 23일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...