相关疑难解决方法(0)

为什么我的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)  
Run Code Online (Sandbox Code Playgroud)

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);  
}
Run Code Online (Sandbox Code Playgroud)

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);  
}  
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我注意到当MyActivity打开时,它的流程如下:

onCreate/onNewIntent - > onResume - > onPause - > onResume

我不确定为什么它会立即进行onPause.我注意到这只发生在标志打开被筛选时.有谁知道为什么会这样?有什么办法可以防止这种行为?

java android android-lifecycle android-activity

47
推荐指数
5
解决办法
3万
查看次数