2012-10-03 2 views
1

나는 BrodcastReceiver의 A 활동 및 IB 활동에 있습니다.화면 잠금 후 UI 업데이트

@Override 
    public void onReceive(final Context context, Intent intent) { 
     if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
      //start activity 

      ((Activity) context).runOnUiThread(new Runnable(){ 
       public void run(){ 
        Intent i = new Intent(context, Pause.class); 
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
         | Intent.FLAG_ACTIVITY_CLEAR_TOP 
         | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

       context.startActivity(i); 

        } 
       }); 

      wasScreenOn = false; 

     } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 

      wasScreenOn = true; 
     } 
    } 

화면을 잠금 해제 할 때 활동 B가 표시되기 전에 활동 A가 잠깐 나타납니다. 어떻게 해결할 수 있습니까?

+0

준비가되기 전에 추가 시간이 소요되는 활동 B의 코드가 있습니까? – waqaslam

+0

은 간단한 FrameLayout 및 정적 textView를 사용한 활동입니다. – user1169390

+0

그러면 hmmm은 문제가되지 않습니다. 조언으로서 : STATIC에게 TextView를 제공하지 마십시오. 메모리 누수가 발생할 수 있습니다. – waqaslam

답변

1

코드가 좋아 보인다. 이는 애플리케이션에서 문제가되지 않지만 화면 잠금 해제의 Android는 다른 앱과 유사한 동작을합니다. 아마도 이것은 시스템이 저전력 상태에서 깨어 난 후 startActivity를 일시 중단 할 수 있기 때문일 수도 있습니다. 따라서 UI를 업데이트 할 때, 화면을 끄는 동안 또는 화면을 켠 후에 다시 방문 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 startActivity()에 대한 코드를 Receiver에 넣으면 무관합니다. – user1169390

+0

일반적으로 onRecieve()에서 시스템은 잠자기 잠금을 사용하므로 약간의 지연이 있고 새 작업을 시작하려면 UI를 무효화해야하며 전체보기는 redrwan이어야하므로 지연이 발생합니다. Waqas는 좋은 제안을하고 있습니다. –

0

지연이 애니메이션을 사용한 하나의 활동에서 다른 활동으로의 전환으로 인한 것이라면 애니메이션을 비활성화하는 의도로 다음 플래그를 설정하여 활동을 빠르게 볼 수 있습니다.

Intent.FLAG_ACTIVITY_NO_ANIMATION 

는 경우, 여전히 다음 AsyncTask 내부 (데이터베이스 호출 등) 처리에 시간을내어 할 수있는 활동 B의 코드를 삽입하려고하면 지연을 해결하지 않습니다.

+0

활동 B의 코드는 무엇을 의미합니까? startActivity B 코드는? – user1169390

+0

예, 활동 B의 데이터를 초기화하는 코드 – waqaslam