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

브로드캐스트리시버에서 백그라운드 액티비티의 메소드를 호출하면 안되나요?

0 추천

안녕하세요  초보 안드로이드 개발자입니다.

브로드캐스트 리시버로 연속으로 발생하는 두 가지의 브로드캐스트를 받아 액티비티의 메소드를 실행시켜 애드몹을 노출하는 기능을 구현했는데요.

첫 번째 브로드캐스트가 발생하면 액티비티를 백그라운드로 실행시켜 해당 액티비티에서 광고를 로드하고, 두 번째 브로드캐스트가 발생하면 액티비티에서 광고를 띄우는 방식을 하고 있습니다. 

(만약 두 번째 브로드캐스트가 발생할 때 액티비티가 죽어있으면 액티비티를 새로 실행시켜 광고를 뿌려주는 방식으로 하고있습니다.)

근데 이 방법이 대부분의 경우 잘 되다가 가끔 안되거나 특정 기종, 안드로이드 버전(4.4 이하)에서는 아예 안되는 경우가 발생합니다 ㅠ

지금 예상하는 문제는 두 번째 브로드캐스트를 받아 액티비티가 죽었는지 체크할 때 죽은 액티비티를 살아있는 액티비티로 인식하여 광고를 안 보여주고있거나,

액티비티 살아있는 여부 체크 후 죽어버려서 안 보여주는것으로 파악하고는 있는데 맞는지 모르겠어요..

서비스를 이용해볼까도 했지만 서비스에서는 애드몹 광고 로드가 안되는 문제, 브로드캐스트 리시버와 바인드 발생해서 고민만하고 있습니다.

답변 부탁드립니다 ㅠㅠ

private void showAdMob() { //해당 함수는 브로드캐스트리시버에서 실행합니다.
        if (targetActivity.mContext != null) {
            ((targetActivity) targetActivity.mContext).showAd();
        } else {
            Intent intent = new Intent(mContext, AdMobActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
            intent.putExtra("show_immedy", true); //true일 경우 광고 로드 후 바로 showad를 호출합니다.
            mContext.startActivity(intent);
        }
    }

 

 

 

 

 

 

늅늅늅 (220 포인트) 님이 2017년 2월 22일 질문

1개의 답변

+1 추천
 
채택된 답변
activity를 single_task로 하고, 항상 startActivity로 호출하면 되지 않을까요?
쎄미 (162,410 포인트) 님이 2017년 2월 23일 답변
늅늅늅님이 2017년 2월 23일 채택됨
그런 방법으로도 가능하군요! 적용해봐야겠네요. 감사합니다!
...