BroadcastReceiver中如何启动Activity的多个实例
public class SmsReceiver extends BroadcastReceiver {
final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(SMS_RECEIVED_ACTION)) {
Intent newIntent = new Intent(context, MyActivity.class);newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(newIntent);
}
}
}
}
上面的代码在收到新短信时,自动启动MyActivity。现在的问题是:收到一条短信启动MyActivity后,如果MyActivity没有关闭,那么后续收到的短信就不会再启动MyActivity的新实例了。请问怎么才能解决这个问题?
[解决办法]
设置一下启动模式,singleTask
[解决办法]
Intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
[解决办法]
Intent.FLAG_ACTIVITY_CLEAR_TOP
[解决办法]
Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
这个样子的
[解决办法]
在onPause方法中finish掉,下次开新的
[解决办法]
Intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
[解决办法]
Intent.FLAG_ACTIVITY_CLEAR_TOP )
即可。
建议楼主看看intent flag参数的资料
singtask new task singtop singleinstance
[解决办法]
如果MyActivity没有关闭,那么就不会执行onCreate事件,而会执行
onNewIntent事件,建立楼主可以写一下,就像监听onDestroy、onResume、onStop一样。
public void onNewIntent(Intent intent){
Log.e(TAG,"onNewIntent");
super.onNewIntent(intent);
}