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

종료해도 다시 나타나는 액티비티

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

 

죽여도 살아나는 서비스가 아니라

 

죽여도 홈버튼을 눌러도 계속 최상단으로 올라오는 액티비티를 구현하고 싶은데

 

제가 시도해본건 서비스를 돌리고 서비스가 죽을 때 서비스에서 액티비티를 호출.

이거였는데 안되더라고요..서비스에서는 액티비티 호출이 안되나요?

 

앱을 실항하는 식으로 하고픈데 어떤 방법이 있을까요?

 

생각해보니 알람앱같은것들은 알람시간이디면 앱이 실행이 되잖아요

그것처럼 구현하면 되려나요?

무한히 켜지는 앱
윤둥이 (4,560 포인트) 님이 2013년 7월 18일 질문

1개의 답변

+1 추천
 
채택된 답변

그냥 엑티비티에서와 같이 실행 하시면 되는데....

어려워 하시는 것 같아  방금짠 소스하나 올려드립니다.

테스트도 거치지 않은 소스이므로 정상작동은 장담못하지만 충분한 참고자료가 될듯 합니다.

 

new Thread(new Runnable() {
   @Override
   public void run() {
     while (true) {
      ActivityManager activityapp = (ActivityManager) getApplicationContext()
       .getSystemService(Context.ACTIVITY_SERVICE);
     List<ActivityManager.RunningTaskInfo> task = activityapp
       .getRunningTasks(1);
     ComponentName topActivity = task.get(0).topActivity;
 
     String strPackage = topActivity.getPackageName();
     String myAppPackageName = "실행할 패키지 네임";
 
     if (!myAppPackageName.equals(strPackage)) {
     Intent intent = getPackageManager()
       .getLaunchIntentForPackage("실행할 패키지 네임");
     startActivity(intent);
  } else {
     Log.e("out", "out");
}
}
}
}).start();
 
서비스 create단에 추가하시면 됩니다.
get_task퍼미션도 주셔야 하구요.
엑티비티 시작과 동시에 위소스가 들어간 서비스를 시작 하시면 됩니다.
 
저는 이렇게 해야 다시 살아난다는 것을 보여주기 위해 그냥 무한루프를 돌렸지만 상황에 맞는 이벤트는 직접 구현 하시면 됩니다.
 
많은 도움이 되셨기를 바랍니다.
 
ThisPlus (46,920 포인트) 님이 2013년 7월 18일 답변
윤둥이님이 2013년 7월 18일 채택됨
짜이뚱님 지금 계신가요? 혹시.. 연락좀 닿으면 또 한번 여쭙고싶은게 있는데.. 어제 그 app 테스크를 이용해서 강제 실행시키는 로직에 대해서요..
음~~~ 머특별할 것도 없는데....무슨일이신지?
아 점심먹고오느라 못봤어요 ㅠ 죄송합니다
어제 주신 코드에 run 부분이 while 문으로 돌아가잖아요

그러다보니까 계속 얘가 테스크 상태를 쓰레드로 검사하다보니 메모리가 상당히 많이 먹게되고 안좋더라고요

그래서 제가 반복문을 없애고
onDestroy 또는 onPouse에다가 주신 코드를 메서드화 해서 호출을 했어요

그러니까 문제가 생기는게

onDestroy 당시에 당장 메서드는 호출돼서 테스크 검사를 하지만
디바이스 자체에서 화면은 전환되는데 테스크가 즉각 바뀌어 반영되지 않는 것 같더라고요....그래서 다시 앱이 실행될 때도 있고..아닐때도있고..

이런 문제는 어떻게 해결하면 좋을까요..?
음 확실히 말씀드릴수 있는건 onDestory는 불리는 시점이 불명확합니다.
그래서 반드시 수행되어야할 작업은 이함수에서 하지 않죠...
뭐 저도 이런 기능은 넣어 본적이 없는지라....
저도 딱히 떠오르는 방법은 생각이 나지 않습니다.
저도 일일이 테스트를 해봐가면 해봐야할 작업응로 보입니다.
근데 액티비티 생명주기 만으로 모든 액티비티의 상태를 체크 할수 있을지 의문이 들기는 합니다.
많은 도움못드려 죄송합니다.
ㅎㅎ 아닙니다 감사합니다 !!
...