OnNewIntent 的呼叫,SingleStask 單例模式的Activity 當遇到新的Intent的時候,不會走onCreate方法了
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); processExtraData(); } protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent);//must store the new intent unless getIntent() will return the old one processExtraData() } private void processExtraData(){ Intent intent = getIntent(); //use the data received here }
OnNewIntent 的呼叫:
單例模式(SingleStask )的Activity 當遇到新的Intent的時候,
單頂模式(singleTop)
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);//原先已經存在這個即將跳到的Activity;
延伸---可以使用這個標誌進行重新整理Intent,進而重新整理當前介面
不會走onCreate方法了,
而是走OnNewIntent方法,接著是生命週期其他方法;
<activity android:label="@string/app_name" android:launchmode="singleTask"android:name="Activity1"/>
所以在處理的是時候,OnNewIntent 的常用方法,是和OnCreate方法一樣。
@Override
protected void onNewIntent(Intent intent) {
MyLog.d(TAG, TAG+"______ onNewIntent 0"+getIntent().getBooleanExtra(ComConstants.isAllowedSendVoiceMsg, isAllowedSendVoiceMsg));
MyLog.d(TAG, TAG+"______ onNewIntent 0-1"+intent.getBooleanExtra(ComConstants.isAllowedSendVoiceMsg, isAllowedSendVoiceMsg));
setIntent(intent);//注意 是設定的是intent
MyLog.d(TAG, TAG+"______ onNewIntent 1"+getIntent().getBooleanExtra(ComConstants.isAllowedSendVoiceMsg, isAllowedSendVoiceMsg));
super.onNewIntent(intent);
MyLog.d(TAG, TAG+"______ onNewIntent 2"+getIntent().getBooleanExtra(ComConstants.isAllowedSendVoiceMsg, isAllowedSendVoiceMsg));
}