2013-01-14 4 views
0

SMS를 보내고받는 데 크게 도움이되는 앱을 작성했습니다. 실제로 그것은 장치에 몇 가지 명령을 보내고 그 장치에서 사용자에게 보여줄 대답을 얻습니다. singleTask은 동시에 여러 인스턴스를 실행할 것을 피하기 위해 같은BroadcastReceiver가 활동을 올바르게 시작하지 않습니다.

<activity 
    android:name=".MainActivity" 
    android:launchMode="singleTask"> 
</activity> 

그것은 정의됩니다 나는 주요 아래이 응용 프로그램의 활동을 정의했다.

Intent intent = new Intent(); 
intent.putExtra("MESSAGE_BODY", sms.getBody()); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.setClass(context, MainActivity.class); 
context.startActivity(intent); 
:

SMS를 브로드 캐스트 리시버 내부
public void onCreate(Bundle savedInstanceState) { 
    // ... 
    handleNewMessage(this.getIntent()); 
} 

@Override 
public void onNewIntent (Intent intent) { 
    // ... 
    handleNewMessage(intent);  
}  

, 나는 아래와 같이 FLAG_ACTIVITY_NEW_TASK 플래그와 함께이 활동을 시작합니다 내부 MainActivity, 나는 그것이 전경에서 실행되는 동안이 활동에 새로운 전화를 얻기 위해 onNewIntent() 메소드를 추가

문제는

가끔 3-4 개의 텍스트 메시지가 표시되지만 MainActivity가 시작되지 않습니다. 전화가 걸리거나 전화 잠금을 해제하면 모든 메시지가 동시에 앱 (MainActivity)을 시작합니다!

2 2 ~ 3 초 동안 화면을 켜고 문자 메시지를받은 후 자동으로 잠금을 해제하지만 어떻게 작동하는지 알고 싶습니다.

답변

0

솔루션

@Override 
public void onReceive(Context context, Intent intent) { 
    PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
    PowerManager.WakeLock wl = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, ""); 
    wl.acquire(); 
    // your code ... 
    wl.release(); 
} 
"아래로 WakeLock를 사용하는 것입니다
관련 문제