首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

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

2013-07-01 
BroadcastReceiver中如何启动Activity的多个实例public class SmsReceiver extends BroadcastReceiver {fi

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);
}

热点排行