如何停止后台服务?

时间:2018-01-11 10:38:13

标签: android service

我创建了一个后台服务这个工作正常甚至应用程序都是杀死状态 现在我想在屏幕关闭时停止后台服务,并在屏幕开启时启动服务。

2 个答案:

答案 0 :(得分:0)

在onPause()或onStop()方法中,你必须写:

-- Select the students having the top 5 marks in each subject.
SELECT studentID, studentName, studentMarks, subject FROM
(
  -- Use an incremented value to differentiate rows with the same subject.
  SELECT *, (@n := if(@s = subject, @n +1, 1)) as n, @s:= subject 
  FROM student
  CROSS JOIN (SELECT @n := 0, @s:= NULL) AS b
) AS a
WHERE n <= 5
ORDER BY subject, studentMarks DESC;

答案 1 :(得分:0)

您可以使用以下操作:

android.intent.action.SCREEN_OFF
android.intent.action.SCREEN_ON

但是不要在清单中为这些广播注册接收器,因为该接收器不会接收这些广播,因为这是受保护的意图,只能由系统发送。

解决方案对于此问题,您必须创建一个服务,为这些意图注册本地广播接收器。如果您这样做,那么只有当您的服务正在运行时,您的应用才会关闭屏幕。

使用以下代码:

IntentFilter screenStateFilter = new IntentFilter();
screenStateFilter.addAction(Intent.ACTION_SCREEN_ON);
screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(mScreenStateReceiver, screenStateFilter);

注意:请勿忘记在服务的onDestroy中取消注册接收方:

unregisterReceiver(mScreenStateReceiver);

希望这适合你...