当前位置: 代码迷 >> Android >> BroadcastReceiver中怎么启动Activity的多个实例
  详细解决方案

BroadcastReceiver中怎么启动Activity的多个实例

热度:79   发布时间:2016-05-01 10:37:51.0
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);
}
  相关解决方案