我在onCreate中注册了接收者,但onReceive有时会被调用,有时不会被调用。
public class MyReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.v("receiver","get called");
}
}
以下是我在onCreate中注册接收器的方法
PROCESS_RESPONSE = getBaseContext().getResources().getString(R.string.serviceResponse);
IntentFilter filter = new IntentFilter(PROCESS_RESPONSE);
filter.addCategory(Intent.CATEGORY_DEFAULT);
receiver = new MyReceiver();
registerReceiver(receiver, filter);
以下是我发送广播的方式:
Intent broadcastIntent = new Intent();
PROCESS_RESPONSE=getBaseContext().getResources().getString(R.string.serviceResponse);
broadcastIntent.setAction(PROCESS_RESPONSE);
broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT);
sendBroadcast(broadcastIntent);
答案 0 :(得分:0)
试试这个:
broadcastIntent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
它有时起作用并且不起作用的原因是
因为Android 3.0引入了一个启动控制安全措施,可以防止已停止的应用程序的组件通过意图启动。如果应用程序刚刚安装且之前未启动,或者用户使用设备上的应用程序管理器手动停止,则认为应用程序处于停止状态。但是,为了解决这个问题,可以在发送之前将一个标志添加到意图中,以指示允许意图启动已停止应用程序的组件。
因此,当您尝试全新安装(从IDE启动)时,应用程序将被视为处于停止状态一段时间,之后则不会。因此,当您尝试播放时,它有时无法正常工作。让我知道这是否有效,当然确保你已经注册了BroadcastReciever(我确定你有,如果它有效,至少在某些时候)。