他们有办法让服务在被杀时可以运行吗

  • 本文关键字:运行 服务 他们 android
  • 更新时间 :
  • 英文 :


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

我发现了很多像我这样的问题,但是人们的回答是一圈又一圈,我真的厌倦了这个,现在这是我最后一次也是最后一次尝试如果你们能解决这个问题,我会很感激让我在Brief中再次提问:

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

(注意:1。我已经使用了START_STICKY和Service。START_STICKY2.我还做了一件坏事,它在onDestroy中被称为service。但还是有人反对。)请给我一个好的解决方案我只有在回答后才会感激(因为我真的受够了)这是我的代码

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. 那些认为不可能的人错了

  • 我刚用其他设备试了一下,效果很好

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

  • 谢谢你的时间:)

    最新更新