从 IntentService 创建的接收器不起作用

Receiver, that was created from IntentService, doesn't work

我有地理围栏 IntentService。在 GEOFENCE_ENTER 我创建了广播接收器。但它没有采取行动。

如果我在 MainActivity 中创建它 - 一切都很好。但我不需要。

我不明白当我从服务创建接收器时会发生什么。

    public class GeofenceTransitionsIntentService extends IntentService {

    ...

        @Override
        protected void onHandleIntent(Intent intent) {
           ...

           if (geofenceTransition == Geofence.GEOFENCE_TRANSITION_ENTER) {

                //Create WiFi scan receiver
                WiFiScanReceiver wifiScan = new WiFiScanReceiver();
                registerReceiver(wifiScan, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));

                //Scan
                WifiManager wm = (WifiManager) getSystemService(Context.WIFI_SERVICE);
                Boolean scanStarted = wm.startScan();
            }

        }

onHandleIntent() 中调用 registerReceiver() 效果不佳。在 onHandleIntent() returns 之后,您的接收器将在微秒后消失,并且服务会自行停止。

要么使用清单注册接收器,要么使用常规 Service 而不是 IntentService,管理您自己的后台线程并在完成后安排 stopSelf() 服务有了它。

IntentService 将在 onHandleIntent() 完成后销毁。 你应该使用 Service