android - BroadcastReceiver 作为它自己的类还是在 Activity 或服务类中内部实例化它?哪个更好?

标签 android service broadcastreceiver

哪个更好?要在 Activity 或服务类中实例化 Broadcast 接收器,还是创建一个扩展 BroadcastReceiver 的类?

下面是我在服务类中实例化 BroadcastReceiver 的示例。

   public BroadcastReceiver receiver = new BroadcastReceiver() {
    private String filename;

    @Override
    public void onReceive(Context context, Intent intent){
        String action = intent.getAction();
        Bundle extras = intent.getExtras();
        filename = extras.getString("AudioPath");
    Toast.makeText(AudioService.this, "the audio file name sent: " + filename , Toast.LENGTH_LONG).show();
    if(action.equals("com.porno.xxx.AudioPlay")){
            selectedAudioPath = audiopath;
            String state = intent.getExtras().getString("stringdata");
            playSong();
            Toast.makeText(AudioService.this, "play audio from service string data "+ state, Toast.LENGTH_LONG).show();

        }
        else if(action.equals("com.porno.xxx.AudioPause")){
            pauseSong();

            selectedAudioPath = audiopath;
            Toast.makeText(AudioService.this, "pause audio from service", Toast.LENGTH_LONG).show();
        }
        else if(action.equals("com.porno.xxx.AudioSelector")){
            Toast.makeText(AudioService.this, "music selector from service", Toast.LENGTH_LONG).show();
            Intent i = new Intent();
            audiopath = intent.getStringExtra("filename");
            Toast.makeText(AudioService.this, "selelcted audio path: " + audiopath, Toast.LENGTH_LONG).show();
        }
        else if(action.equals("com.porno.xxx.AudioRelease")){
            Toast.makeText(AudioService.this, "My Service Stopped and destoryed", Toast.LENGTH_LONG).show();
            player.stop();
            if (player != null) player.release();

                }   

        }

};

最佳答案

首先你要计划你想用广播接收器做什么。然后你分析最佳和可行的解决方案。 如果您想在 Activity 中注册和取消注册广播接收器,那么您的源代码就可以了。

例如,如果您想在应用程序未执行时调用广播接收器。(这意味着退出应用程序而不是强制关闭)。那么你不应该在编码中注册和取消注册广播接收器。 为此,您创建/实现了一个从 BroadcastReceiver 扩展的单独类。 在 list 文件中,您要添加广播接收器。

关于android - BroadcastReceiver 作为它自己的类还是在 Activity 或服务类中内部实例化它?哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13813656/

相关文章:

android - Kotlin延迟后如何调用函数?

java - 从 JSON 响应中提取值

c# - Azure函数不向服务总线主题发送消息

service - 安卓穿戴: Listen to incoming notifications

android - 设置广播接收器以获得其他应用程序使用的权限

Android:在不是 Activity 或 BroadcastReceiver 的类中威胁隐式 Intent

android - 通知中的缩放、裁剪图标

android - 检测 WebView 何时加载其所有图像

c# - 使用 Topshelf 时服务没有及时响应启动或控制请求

android - 监听android中的硬件按钮点击事件