【问题标题】:why Broadcast receiver is not working continuously inside service为什么广播接收器不能在服务内部连续工作
【发布时间】:2020-01-23 14:05:35
【问题描述】:

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

在这里,我希望我的应用程序检测互联网变化并每次都显示 Toast,但 Toast 消息会一直显示,直到我的应用程序正常工作。

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

MainActivity中的onCreate-

Intent service = new Intent(MainActivity.this, LatestCallService.class);
    startService(service);

服务内的BroadcastReceiver:

         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);

请让我知道我的代码有什么问题。

【问题讨论】:

  • 你试过前台服务吗?
  • 您使用的是哪个品牌的设备?
  • 你用的是哪个安卓版本?
  • @frankenstein 我正在使用 oneplus 和 Android Oreo。

标签: android service broadcastreceiver background-service


【解决方案1】:

术语“关闭我的应用程序并不是一个准确的说法。但我猜你的意思是你在最近的任务列表屏幕中向右/向左滑动了你的应用程序。

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

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

********
更新解决方案: 您可以在此post 中找到解决问题的方法。

【讨论】:

  • 是的,我的意思是我从最近的任务列表中向右/向左滑动了我的应用程序。我的广播接收器在服务内部,所以我认为它应该在后台工作,对吧?
  • 不一定。如果你想要一种永远存在的服务,你可以看这里:stackoverflow.com/questions/20592366/…
  • @tenTen 这解决了你的问题吗?或者您需要更多帮助?
  • 是的!但我开始了前台活动..还有一些变化。
  • 如果你把你的解决方案放在这里,它会对你之后的其他人有所帮助?
【解决方案2】:

我更改了我的代码。我已经盯着前台服务,之后我的代码正在运行,并且即使在关闭应用程序后广播接收器也能正常工作。

主Activity中的前台服务-

  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"

通过这种方式,您可以查看您的服务是否在后台运行。 希望有帮助!! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多