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

Android 在新线程中从服务注册广播接收器,android,multithreading,broadcastreceiver,scheduler,Android,Multithreading,Broadcastreceiver,Scheduler,我有一个广播接收器,它可以启动一个长操作(上传过程)。 在从Activity类启动的服务代码中,我需要在一个新线程中注册这个接收器 我查看了这篇文章,但我需要一个关于使用Context.registerReceiver(BroadcastReceiver、IntentFilter筛选器、String broadcastPermission、Handler scheduler)的更具体的示例 实际上,我需要知道如何从一个服务创建一个新线程,以及如何注册接收者并连接到这个线程 多谢各位。 RA在您的

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

我查看了这篇文章,但我需要一个关于使用Context.registerReceiver(BroadcastReceiver、IntentFilter筛选器、String broadcastPermission、Handler scheduler)的更具体的示例

实际上,我需要知道如何从一个服务创建一个新线程,以及如何注册接收者并连接到这个线程

多谢各位。
RA

在您的服务的
onCreate()
中:


请详细说明,如果可能的话,在帖子中添加一些代码阅读评论,你会得到答案不,不可能在主线程中调用bez onRecive方法,谢谢你的评论。我实际上是在问代码:)我不知道如何在新线程中注册广播接收器。如果可能的话,我需要一个例子。我在网上搜索过如何做到这一点,但我找不到这样的例子。我的理解是:1)我们必须创建一个新线程,2)为此线程创建一个处理程序,然后3)使用该处理程序在新线程中注册接收方。有人能给我一个简短的例子或解释如何做到这一点吗?谢谢大卫,非常感谢!它现在正在工作:)我真的很感谢你的善意帮助。注意:我收到一个错误,告诉我处理程序(looper,this)未定义,我必须删除“this”参数或将其强制转换为回调。我删除了这个论点,它正在发挥作用。非常感谢。啊,很抱歉。我从我的一个服务中复制了这段代码,该服务本身实现了handleMessage()回调。这就是
这个
参数存在的原因。很高兴能帮上忙。
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);