假设将一个活动A的启动模式设置为“singleTask”
如果在活动B中通过startActivity启动活动B,如果系统已经存在一个实例,系统就会将请求发送到这个实例上,但这个时候,系统就不会再调用通常情况下我们处理请求数据的onCreate方法,而是调用onNewIntent方法。
例子:
- <span style="font-family:Arial;BACKGROUND-COLOR: #ffffff"> </span>@Override
- protected void onNewIntent(Intent intent){
- super.onNewIntent(intent);
- this.setIntent(intent);//must store the new intent unless getIntent() will return the old one
- mapModule.setCenter(centerPoint);
- boolean mapRedraw=this.getIntent().getBooleanExtra("MapRedraw", false);
- if(mapRedraw==true){
- mapView.invalidate();
- new AsynMove().execute(SPEED);
- }
- String action = intent.getAction();
- if(UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action))
- {
- intent.setAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
- this.sendBroadcast(intent);
- }
- }
当然,系统可能会随时杀掉后台运行的Activity,如果这一切发生,那么系统就会调用onCreate方法,而不调用onNewIntent方法,一个好的解决方法就是在onCreate和onNewIntent方法中调用同一个处理数据的方法