无法从 BroadcastReceiver 启动/停止服务

Sri*_*eth 2 service android

我有一个启动服务的活动。现在,我想在监听屏幕关闭/打开的 BroadcastReceiver 中启动/停止服务。我用了:

public class ScreenReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
        Log.d("Screen:", "In Method:  ACTION_SCREEN_OFF");
        context.stopService(new Intent(context, ScreenReceiver.class));
    } 
    else if (intent.getAction().equals(Intent.ACTION_USER_PRESENT)) {
        Log.d("Screen:", "In Method:  ACTION_USER_PRESENT");
        context.startService(new Intent(context, ScreenReceiver.class));
    }
}
}
Run Code Online (Sandbox Code Playgroud)

我已添加所需的权限并已在服务中注册/取消注册 BroadcastReceiver。运行代码时,我可以在 Logcat 中看到日志消息,但该服务似乎并未停止。我该如何解决?提前致谢。

Laz*_*nja 5

您正在尝试重新启动 BroadcastReceiver。
改用您的服务类。

context.startService(new Intent(context, ScreenReceiver.class));
Run Code Online (Sandbox Code Playgroud)

应该

context.startService(new Intent(context, YourService.class));
Run Code Online (Sandbox Code Playgroud)

并在您的清单文件中:

<service android:name=".YourService"></service>
Run Code Online (Sandbox Code Playgroud)