从 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
我有地理围栏 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