广播接收器在某些情况下不工作

Broadcast receiver not working in some cases

所以我的 Fragment.class

中有这个接收器
private BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(WeekplanHepler.ACTION_SERVICE_BINDED) && getUpdateService() != null) {
            getCounts();
        }

        if (intent.getAction().equals(Helper.UpdateCounts)) {
            HashMap<String, Integer> counts = (HashMap<String, Integer>) intent.getSerializableExtra(Helper.PARAM_LIST_COUNTS);
            // Updating counts
        }
    }
};

对于registering/uregistering这个接收器,我正在使用这个代码:

@Override
public void onStart() {
    super.onStart();
    getCounts(true);
    getActivity().registerReceiver(receiver, getIntentFilter());
}

@Override
public void onStop() {
    super.onStop();
    getActivity().unregisterReceiver(receiver);
}

getCounts()是一个放在UpdateService中的RetrofitRequest,这里就是getUpdateService()

因此,当改造请求完成后,它 returns 通过 Intent 计数,然后,如您所见,我正在更新它们。但是如果我转到下一个 Activity 然后 returns,请求将正常工作,它会发送意图,但接收者不会得到它。我认为这可能是首先绑定了方法服务引起的。所以我有 BaseFragment,它为所有需要的片段绑定服务

public abstract class BaseFragment<T> extends CustomListFragment<T> {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getActivity().getApplicationContext().bindService(new Intent(getActivity().getApplicationContext(), 
                WeekplanUpdateService.class), connection, Context.BIND_AUTO_CREATE);
    }
}

当我转到下一个activity时,它的片段会绑定服务,而我之前的片段会再次调用请求,并且会有计数。也许接收者对他可以获得多少相同的意图有一些限制,但我不这么认为。请帮助

哦,我忘了说我是如何发送意图的

sendBroadcast(new Intent(Helper.UpdateCounts).putExtra(Helper.PARAM_LIST_COUNTS, counts));

所以,当我开始使用

sendStickyBroadcast(new Intent(Helper.UpdateCounts)
                    .putExtra(Helper.PARAM_LIST_COUNTS, counts));

而不是

sendBroadcast(new Intent(Helper.UpdateCounts)
                    .putExtra(Helper.PARAM_LIST_COUNTS, counts));

成功了。