android - 在新线程中从服务注册广播接收器

标签 android multithreading broadcastreceiver scheduler

我有一个开始长时间操作(上传过程)的广播接收器。 在从 Activity 类启动的服务代码中,我需要在新线程中注册此接收器。

我已经查看了这篇文章Are Android's BroadcastReceivers started in a new thread?但是我需要一个关于使用 Context.registerReceiver(BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler) 的更具体的例子

实际上我需要知道如何从服务创建新线程并注册接收器并附加到该线程。

非常感谢。 RA

最佳答案

在您服务的 onCreate() 中:

private Handler handler; // Handler for the separate Thread

HandlerThread handlerThread = new HandlerThread("MyNewThread");
handlerThread.start();
// Now get the Looper from the HandlerThread so that we can create a Handler that is attached to
//  the HandlerThread
// NOTE: This call will block until the HandlerThread gets control and initializes its Looper
Looper looper = handlerThread.getLooper();
// Create a handler for the service
handler = new Handler(looper);
// Register the broadcast receiver to run on the separate Thread
registerReceiver (myReceiver, intentFilter, broadcastPermission, handler);

关于android - 在新线程中从服务注册广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10682241/

相关文章:

android - 无法使用 BroadcastReceiver 捕获 android.intent.action.DELETE

java - 如果 Fragment 可见,则从 Service 或 BroadcastReceiver 更新 Fragment UI

android - 如何在运行时重新定位图像按钮 View 的位置?

c++ - 两个线程中的同时 abort()

android - 在 TextView 中显示短信

c++ - bool 变量的线程同步

c++ - Shared_ptr 在创建 boost 线程时从未被释放

android - 在字符串中使用变量,执行 Html.fromHtml

android - facebook android api 发送位图、消息和链接

android - 如何通过 Viewpager 的 setCurrentItem 方法使我的箭头不可见?