Android 为什么广播接收机在服务内部不连续工作
在我的应用程序运行之前,我的广播接收器在服务内部正常工作,但如果我关闭应用程序,它会立即停止工作 在这里,我希望我的应用程序能够检测到互联网的变化,并在每次都显示Toast消息,但在我的应用程序运行之前,Toast消息都会显示出来 我已经在MainActivity中启动了我的服务,并在服务中定义了我的广播 在main活动中创建内部onCreate-Android 为什么广播接收机在服务内部不连续工作,android,service,broadcastreceiver,background-service,Android,Service,Broadcastreceiver,Background Service,在我的应用程序运行之前,我的广播接收器在服务内部正常工作,但如果我关闭应用程序,它会立即停止工作 在这里,我希望我的应用程序能够检测到互联网的变化,并在每次都显示Toast消息,但在我的应用程序运行之前,Toast消息都会显示出来 我已经在MainActivity中启动了我的服务,并在服务中定义了我的广播 在main活动中创建内部onCreate- Intent service = new Intent(MainActivity.this, LatestCallService.class);
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这解决了你的问题吗?或者你需要更多的帮助吗?是的!但是我开始了前台活动..并且没有什么变化。如果你把你的解决方案放在这里,对你之后的其他人会有帮助的