我尝试实施一个IntentService
,其中BroadcastReceiver
对SCAN_RESULTS_AVAILABLE_ACTION
有反应。IntentService中的广播接收器(服务已泄漏意向接收器)
当调用onReceive
时,IntentService
应该比较列表。我总是得到
“服务已泄露IntentReceiver”
错误,即使我注销在onDestroy()
的BroadcastReceiver
。
下面是代码:
public class MyClass extends IntentService {
private HashMap<String, List<String>>;
private WifiManager mWifiManager;
private WifiReceiver mWifiReceiver;
public MyClass() {
super("MyClass");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
mWifiReceiver = new WifiReceiver();
registerReceiver(mWifiReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
mWifiManager.createWifiLock(WifiManager.WIFI_MODE_SCAN_ONLY,"ScanLock");
mWifiManager.setWifiEnabled(true);
return START_NOT_STICKY;
}
@Override
public void onDestroy(){
unregisterReceiver(mWifiReceiver);
mWifiManager.setWifiEnabled(false);
}
@Override
protected void onHandleIntent(Intent intent) {
// TODO Auto-generated method stub
}
class WifiReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Here I do my stuff with the scan results
//should be called every 5 seconds
}
}
哪里是在代码中的问题?
为什么我不断收到此错误?
我仍然需要学习很多关于Android的知识,但我认为IntentService
是正确的路要走,因为我不期望这个班有任何结果。当我发送呼叫stopService()
时它应该停止。这个IntentService
被另一个IntentService
调用!那是问题吗?
感谢您的帮助。
我试过了,但Receiver没有注册了。我创建了Wifi Receiver对象并在super.onCreate()后注册了Receiver; – Benjamin
使用onHandleIntent代替onStartCommand会更好吗? – Benjamin
好吧,现在它被注册了。谢谢 – Benjamin