当前位置: 首页 > 知识库问答 >
问题:

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

谭繁
2023-03-14

我有一个broadcastreciever开始了一个长的操作(上传过程)。在一个从活动类开始的服务的代码中,我需要在一个新线程中注册这个接收器。

我已经检查了这篇文章Android的广播接收器是在一个新的线程中启动的吗?但是我需要一个关于使用Context.RegisterReceiver的更具体的示例(BroadcastReceiver receiver、IntentFilter filter、String broadcastPermission、处理

共有1个答案

齐志勇
2023-03-14

在服务的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新手。我的项目有一个活动和一个服务。我的服务有一个广播接收器,而活动有一个广播发送器,它在PeriodSender方法中。动态地,当我注册接收者时,在服务开始时它不会调用,但是如果我在几分钟后发送了一些东西,它就会调用。但是我想在清单中注册它,我已经在清单中包含了接收方的详细信息,但是接收方没有调用。我的接收方类名是MyReceiver21,意图操作是My_ACTION1。实际上

  • Android:进程 ...如果分配给该属性的名称以冒号(':')开头,则在需要时创建一个应用程序专用的新进程,广播接收器在该进程中运行。

  • 如果我有一个名为MyService的服务,它看起来像这样,那么该服务的BroadcastReceiver会从“SendData”方法中重新获得它自己的广播吗??

  • 问题内容: 有人可以解释和之间的确切区别吗? 在什么情况下我们必须使用每个Receiver类? 问题答案: 和之间只有一个区别。 当您收到内部广播方法时, 假设, BroadcastReceiver : 它 不保证 该 CPU将保持清醒 ,如果你启动一些长时间运行的进程。CPU可能会立即回到睡眠状态。 WakefulBroadcastReceiver : 这是 保证 该 CPU将保持清醒 ,直到你

  • 我是Android开发人员开发一个应用程序。在这里,我从GCM获得注册ID并将其保存在字符串中,现在我想将此注册ID从广播接收器类发送到我的主活动类,以便我可以将此值发送到我的服务器。我试图使用意图,但武力关闭总是发生。 GcmBroadcastreceiver的代码。班级是 公共void onReceive(上下文、意图){

  • 我正在尝试执行一个相对简单的任务:我有一个片段,它启动一个服务,从远程服务器拉出一些JSON。然后,我想使用broadcast将JSON传递回原来的调用片段,其中BroadcastReceiver在片段中定义为匿名类。 然而,每当我尝试这样做时,我总是得到以下错误: 下面是该服务的代码: 我尝试了很多不同的方法:通过intent只发送原始JSON字符串,将广播接收器定义为一个单独的类,将JSON转