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

问题描述 投票:0回答:1

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

在这里,我希望我的应用程序每次都能检测到互联网变化并显示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);

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

android service broadcastreceiver background-service
1个回答
0
投票

术语“关闭我的应用程序不是一个精确的陈述。但是我想你的意思是您在“近期任务”列表屏幕中向右/向左滑动应用程序。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.