我有一个在进程的主线程上运行的类。我想在这个类中实现一个在单独线程上运行的广播接收器。

我通过创建一个扩展线程的内部类并在这个内部类中初始化一个处理程序来尝试这个,我可以将它提供给 registerReceiver(BroadcastReceiver 接收器、IntentFilter 过滤器、String broadcastPermission、Handler scheduler) 以在这个处理程序上执行广播接收器(附加到新创建的线程)。但徒劳无功。日志显示 onReceive 正在主线程上被调用。

请帮忙。(我看过一些关于如何使用 registerReceiver(BroadcastReceiver 接收器、IntentFilter 过滤器、String broadcastPermission、Handler scheduler)的帖子,但没有任何帮助)。

最佳答案

我建议你应该使用 HandlerThread 而不是子类化 Thread
例如

HandlerThread handlerThread = new HandlerThread("DifferentThread" , android.os.Process.THREAD_PRIORITY_BACKGROUND);
handlerThread.start();
Looper looper = handlerThread.getLooper();
private Handler handler = new Handler(looper, this);
// Register the broadcast receiver to run on the separate Thread
registerReceiver (myReceiver, intentFilter, broadcastPermission, handler);

希望这对您的实验有所帮助;)

开心!

10-08 07:12