Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android的服务类中实现BroadcastReceiver?_Android_Android Service_Android Broadcast - Fatal编程技术网

如何在Android的服务类中实现BroadcastReceiver?

如何在Android的服务类中实现BroadcastReceiver?,android,android-service,android-broadcast,Android,Android Service,Android Broadcast,我需要在我创建的服务类中实现BroadcastReceiver: public class MyService extends Service 在这个类中,当用户按下MyActivity类中实现sendBroadcas()的按钮时,我必须使用Thread-Sleep来实现下载模拟。我无法将服务类扩展到BroadcastReceiver,因为它已扩展到服务。有人能帮我弄清楚如何实现这个机制吗 谢谢让BroadcastReceiver成为您服务中的顶级类或内部类。并在您的服务中获取接收者的参考。像

我需要在我创建的服务类中实现BroadcastReceiver:

public class MyService extends Service
在这个类中,当用户按下MyActivity类中实现sendBroadcas()的按钮时,我必须使用Thread-Sleep来实现下载模拟。我无法将服务类扩展到BroadcastReceiver,因为它已扩展到服务。有人能帮我弄清楚如何实现这个机制吗


谢谢

让BroadcastReceiver成为您服务中的顶级类或内部类。并在您的服务中获取接收者的参考。像这样:

public class MyService extends Service {
    BroadcastReceiver mReceiver;

    // use this as an inner class like here or as a top-level class
    public class MyReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            // do something
        }

        // constructor
        public MyReceiver(){

        }
    }

    @Override
    public void onCreate() {
         // get an instance of the receiver in your service
         IntentFilter filter = new IntentFilter();
         filter.addAction("action");
         filter.addAction("anotherAction");
         mReceiver = new MyReceiver();
         registerReceiver(mReceiver, filter);
    }
}

按下按钮后,使用按钮启动服务,并在服务中注册广播接收器并在服务启动时发送广播,将另一个扩展BroadcastReceiver的类与扩展服务的类一起放入该广播接收器是否也需要添加到清单中?使用意图过滤器?@rmmcnulty9否,因为接收器在运行时在服务的onCreate()中注册。我也有同样的情况,我想运行一个在后台无限运行的服务,每当我们收到短信时,它都会显示toast。为此,我创建了一个扩展服务的类。哪一个选项更好,我应该在服务类中创建LocalBroadcastManager还是为Standalone Broadcastreceiver创建Standalone Broadcastreceiver它必须在manifestfile中注册然后我的服务和Broadcastreceiver在我收到短信时如何通信?节省了我的时间。。。永远不要忘记取消注册接收者(mReceiver)在onPause或OnDestroyOW中,这确实是一个很棒的答案:)即使在这么多年之后