我的应用程序中有一个后台服务来检测wifi点。他运行良好,但当设备进入睡眠模式时,此服务将重新启动。我配置了唤醒锁定和Wifi锁定。
我的代码:(创建服务)
public void onCreate(){
super.onCreate();
Settings.System.putInt(getContentResolver(),
Settings.System.WIFI_SLEEP_POLICY,
Settings.System.WIFI_SLEEP_POLICY_NEVER);
wm = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
wifiLock = wm.createWifiLock(WifiManager.WIFI_MODE_FULL, "SD1xWifi");
wifiLock.acquire();
mgr = (PowerManager)getSystemService(Context.POWER_SERVICE);
wakeLock = mgr.newWakeLock(PowerManager.FULL_WAKE_LOCK, "SD1x");
wakeLock.acquire();
}
我的代码:(开始服务)
public void onStart(Intent i, int x){
super.onStart(i, x);
Log.i("TesteWifi", "Find spots wifi started");
try{
wm.startScan();
timer.scheduleAtFixedRate(new mainTask(), 0, 1000);
}catch(Exception e){
e.printStackTrace();
Log.i("TesteWifi", "Error on start service find wifi");
}
}
我的代码:(TimerTask)
private class mainTask extends TimerTask {
@Override
public void run() {
// ...timertask processes...
}
我的代码:(服务在MainActivity中开始)
try {
startService(obj.getServiceAutoCheckin());
} catch (Exception e) {
Log.i("Services", "ERRO: " + e.getMessage());
}
为什么我的服务重新启动?
答案 0 :(得分:1)
使用广播接收器从服务中获取服务意图。
答案 1 :(得分:0)
我通过更改服务启动事件解决了问题。我通过onStartCommand更改了事件。服务响应是START_STICKY。