Android 我打过很多次电话
我有一个从其他应用程序获取数据的服务 当我得到日期时,我发送消息到广播,以刷新用户界面 onReceive方法被多次调用,数据被多次显示 这是我的代码: DataService.java MainActivity.javaAndroid 我打过很多次电话,android,broadcastreceiver,receiver,Android,Broadcastreceiver,Receiver,我有一个从其他应用程序获取数据的服务 当我得到日期时,我发送消息到广播,以刷新用户界面 onReceive方法被多次调用,数据被多次显示 这是我的代码: DataService.java MainActivity.java 如何解决此问题?可能有两个活动实例同时存在。在消息接收器上设置一个断点,检查activity类实例的地址,并查看每次调用onReceive时它们是否不同 有几个原因可以解释为什么两个实例同时存在,但最常见的原因之一是在活动中泄漏上下文。 更多信息。将广播寄存器行置于onCre
如何解决此问题?可能有两个活动实例同时存在。在消息接收器上设置一个断点,检查activity类实例的地址,并查看每次调用onReceive时它们是否不同 有几个原因可以解释为什么两个实例同时存在,但最常见的原因之一是在活动中泄漏上下文。
更多信息。将广播寄存器行置于onCreate中,并在onDestroy方法中注销它。您必须从onResume移动到onCreate的行是:-
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
new IntentFilter("my-event"));}
我通过在onPause方法中注销BroadcastReceiver修复了相同的问题 LocalBroadcastManager.getInstancethis.unregisterReceivermMessageReceiver,new IntentFiltermy事件 在OnResume方法中注册它 LocalBroadcastManager.getInstancethis.RegisterReceiverMessageReceiver,
新的IntentFiltermy事件;} 该问题可能与您的服务有关。请检查您的服务是否向您发送多个数据,或者可能多次发送数据。进行调试并检查它或打印日志以查看到底发生了什么。否服务只发送一次,我检查methode sendmessage只调用了一次,但onReceive调用了多次您正在调用private BroadcastReceiver的多个实例mMessageReceiver=new BroadcastReceiver,使其成为静态或单态以避免这种行为。回答这里-永远不要这样做!onDestroy不能保证被系统调用。@zgulser创建广播接收器的实例对我有用。
// handler for received Intents for the "my-event" event
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.e("","Onreceiver");
String message = intent.getStringExtra("message");
if(message.equals("Alerte1")){
parentItems.add(message);
adapter.notifyDataSetChanged();
}}};
@Override
protected void onResume() {
Log.d(TAG, "On Resume");
super.onResume();
// Register mMessageReceiver to receive messages.
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
new IntentFilter("my-event"));}
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
new IntentFilter("my-event"));}