当他们被杀时,他们有什么办法让服务可以运行吗?

时间:2016-10-12 09:15:09

标签: android

大家,我做了很多研究,但没有人给我正确的答案。 我很惊讶,因为我的问题很简单,但没有找到一个解决方案。

我发现了很多像我这样的问题,但是人们回答他们的问题,我现在真的很厌烦这是我的最后一次也是最后的尝试 如果你们中的任何人解决它,我将不胜感激 让我再次点亮mu问题:

我只是想做一个听电源按钮的简单服务(真的很简单),现在我做了那么简单的事情,我的意思是我用广播接收器做了一个服务ok(很简单),它运行良好,但!!!每当我从后台任务中杀死应用程序,然后服务自动停止,我想要的是什么,杀死任务不会影响我的服务(这有多简单)

(注意:1。我已经使用了START_STICKY和Service.START_STICKY 2.我也做了一件坏事,就是在onDestroy中称为服务。 但仍然竖起大拇指。 ) 请给我一个很好的解决方案 我只会在回答后表示感谢 (因为我真的很讨厌这个) 这是我的代码

MainActivity

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        startService(new Intent(this, MyService.class));

}

为MyService:

  public class MyService extends Service {
        private BroadcastReceiver mReceiver = null;
        public MyService() {
        }

        @Override
        public IBinder onBind(Intent intent) {
            // TODO: Return the communication channel to the service.
            throw new UnsupportedOperationException("Not yet implemented");
        }

        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {

            return Service.START_STICKY;
        }

        @Override
        public void onCreate() {

           IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
            filter.addAction(Intent.ACTION_SCREEN_OFF);
            mReceiver = new ScreenReceiver();
             registerReceiver(mReceiver, filter);
        }
        @Override
        public void onDestroy() {
                super.onDestroy();
        }
    }

ScreenReceiver:

public class ScreenReceiver extends BroadcastReceiver {
    public static boolean wasScreenOn = true;
    @Override
    public void onReceive(final Context context, final Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            Log.e("LightWriter", "I WORK BRO.");

            wasScreenOn = false;
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {

              Log.e("LightWriter", "I WORK BRO.");
            wasScreenOn = true;
        }
    }}

1 个答案:

答案 0 :(得分:1)

我对此感到非常愚蠢,嘿,我得到了答案 那些认为不可能出错的人

  1. 我只是尝试使用其他设备,效果很好

  2. 我的设备的问题是我有棉花糖,所以如果有人允许它允许权限管理员(工作正常)。

  3. 感谢您的时间:)