天天看點

java代碼請求2次_java – 為什麼我的onResume被調用兩次?

基本上,這是我在做什麼

1)設定AlarmManager執行BroadcastReceiver(BCR)

Intent intent = new Intent(m_Context, BCR.class);

intent.putExtras(extras);

PendingIntent pendingIntent = PendingIntent.getBroadcast(m_Context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

am.set(AlarmManager.RTC_WAKEUP, StartTime, pendingIntent)

2)從BCR啟動MyActivity

@Override

public void onReceive(Context context, Intent intent) {

Intent newIntent = new Intent(context, MyActivity.class);

newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

context.startActivity(newIntent);

}

3)讓MyActivity打開螢幕,如果它沒有打開

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

getWindow().addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);

getWindow().addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);

getWindow().addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);

setContentView(R.layout.myactivity);

}

@Overide

protected void onNewIntent(Intent intent) {

super.onNewIntent(intent);

}

由于某些原因,我注意到,當MyActivity打開時,它的流程如下:

onCreate / onNewIntent – > onResume – > onPause – > onResume

我不知道為什麼它立即做一個onPause。我注意到這隻發生在螢幕被打開的标志。有人知道為什麼會這樣嗎?有什麼辦法可以防止這種行為嗎?