2013-03-22 5 views
0

새로운 활동 시작에 몇 가지 문제가 있습니다. 내 애플 리케이션에서 의도 (화면을 해제)를 수신 대기 방송 수신기를 설치했습니다. 화면이 꺼져있을 때, 내 앱이 새로운 활동을 시작해야합니다 (물론 특정 조건 하에서는 스팸 앱을 만들지 않습니다). 그러나 때로는 그렇지 않습니다.활동주기 관련 문제

내 매니페스트에서 "singleTop"활동을 선언 했으므로 "onNewIntent"메서드도 재정의합니다. (이 사실을 알리는 것이 중요하다고 생각합니다.)하지만 여기에 문제가 있습니다.

전화가 잠자기 상태로 전환되고 특정 조건이 충족되면 화면에 두 개의 아이콘 (내 활동)이 나타납니다. 아이콘을 클릭 할 수있게 만들었고 두 번째 아이콘을 클릭하면 현재 활동이 완료되었습니다()()() 안드로이드 소유의 새로운 CALL LOG 활동이 시작됩니다. 그렇게하면 이전 활동 (두 번째 아이콘과 함께 이전에 표시된 하나의 아이콘 만 다른 레이아웃으로 표시)이 다시 나타나지만 전화가 잠자기 상태 인 경우에만 다시 나타납니다. 것은 그것이하지 않는다이다. 내 LOGCAT에 따르면 모든 조건이 충족되지만 활동은 시작되지 않습니다. 내 활동 라이프 사이클은 어떻게됩니까? 수신기 코드 오프

화면 :

@Override 
     public void onReceive(Context context, Intent intent) { 
      Log.d("APP", "MAINSERVICE, Screen OFF"); 


      MissedCallObserver mco = new MissedCallObserver(MainService.this); 

     if(!CallListener.isCallActive) { 
      Log.d("APP", "MAINSERVICE, INSIDE IF (call is not active)"); 

      if(mco.checkMissedCalls() > 0 || mco.checkUnreadSms() > 0) { 
       Log.d("APP", "MAINSERVICE, calls calculated. IF entered. Next is starting activity"); 

      startHandleActivity(); 
      } 
     } 
    } // outer if 


    } // ScreenOffReceiver 




private void startHandleActivity() { 


     Intent startH_Activity = new Intent(MainService.this, HandleActivity.class); 
     startH_Activity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startH_Activity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(startH_Activity); 


    } 
+2

스크린 끄기 이벤트의 수신기에 코드를 게시하면 화면이 꺼져 장치가 잠자기 상태가 될 수도 있으므로 부분적인 작동 대기를 요청해야 할 수도 있습니다. – draksia

+0

내가 그랬어, 지금 그것을 보아라 :) – rootpanthera

+0

당신의 앱은 부분적인 wakockock을 움켜 잡는가? 나는 방송 화면을 기다리는 중이라면 프로세서가 잠자기 직후 잠들 수 있으므로 활동이 생성되지 않는다고 예상 할 수 있습니다. –

답변

0
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG); 
wl.acquire(); 

이 화면 꺼짐 의도 화재 후 안정적으로 코드를 실행할 수 있습니다.