Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么广播接收机在服务内部不连续工作_Android_Service_Broadcastreceiver_Background Service - Fatal编程技术网

Android 为什么广播接收机在服务内部不连续工作

Android 为什么广播接收机在服务内部不连续工作,android,service,broadcastreceiver,background-service,Android,Service,Broadcastreceiver,Background Service,在我的应用程序运行之前,我的广播接收器在服务内部正常工作,但如果我关闭应用程序,它会立即停止工作 在这里,我希望我的应用程序能够检测到互联网的变化,并在每次都显示Toast消息,但在我的应用程序运行之前,Toast消息都会显示出来 我已经在MainActivity中启动了我的服务,并在服务中定义了我的广播 在main活动中创建内部onCreate- Intent service = new Intent(MainActivity.this, LatestCallService.class);

在我的应用程序运行之前,我的广播接收器在服务内部正常工作,但如果我关闭应用程序,它会立即停止工作

在这里,我希望我的应用程序能够检测到互联网的变化,并在每次都显示Toast消息,但在我的应用程序运行之前,Toast消息都会显示出来

我已经在MainActivity中启动了我的服务,并在服务中定义了我的广播

在main活动中创建内部onCreate-

Intent service = new Intent(MainActivity.this, LatestCallService.class);
    startService(service);
服务内的广播接收器:

         BroadcastReceiver br = new BroadcastReceiver()
    {
        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(context, "Inside", Toast.LENGTH_SHORT).show();
 }
   }

  IntentFilter filter = new IntentFilter();
    filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
    _mContext = getApplicationContext();
    _mContext.registerReceiver(br, filter);
请让我知道我的代码有什么问题。

术语“关闭我的应用程序”不是percise声明。但我猜你的意思是,你在“最近的任务列表”屏幕中向右/向左滑动了你的应用程序

一旦onReceive()返回,如果前台没有活动,并且没有正在运行的服务,那么流程的重要性将下降到什么程度 称之为“缓存进程”。Android系统将在任何时候终止这些进程。一旦进程终止,您的广播接收器也将无法工作

好的,如果关闭应用程序的意思与我说的不同,那么当你在“设置”中进入应用程序屏幕并单击“强制停止”按钮时,你的意思可能是。因此,一旦你的应用程序被强制停止,你的应用程序将永远不会运行,直到用户或其他应用程序启动你的应用程序

********
使用解决方案更新:
您可以找到解决此问题的方法。

我已更改了代码。我已启动前台服务,在该服务之后,我的代码仍在工作,即使在关闭应用程序后,广播接收器也在工作

主要活动中的前台服务-

  Intent serviceIntent = new Intent(this, LatestCallService.class);
  serviceIntent.putExtra("inputExtra", "Foreground Service");
  ContextCompat.startForegroundService(this, serviceIntent);
Android清单文件-

  uses-permission android:name="android.permission.FOREGROUND_SERVICE"
通过这种方式,您可以查看您的服务是否在后台工作。
希望有帮助!!:)

你试过前台服务吗?你在用哪个品牌的设备?你在用哪个安卓版本?@frankenstein我在里面用的是oneplus和安卓Oreo。是的,我的意思是我从最近的任务列表中左/右滑动了我的应用程序。我的广播接收器在服务内部,所以我认为它应该在后台工作嗯,对吗?不一定。如果你想要一个永远都可以使用的服务,你可以看看这里:@tenTen这解决了你的问题吗?或者你需要更多的帮助吗?是的!但是我开始了前台活动..并且没有什么变化。如果你把你的解决方案放在这里,对你之后的其他人会有帮助的