我有一项服务,我想从WakefullBroadcastReceiver开始。这项服务必须启用Wi-Fi,然后等待一段时间,之后必须禁用Wi-Fi并停止自己。 我的服务在JellyBean上工作正常,并且当手机处于唤醒状态时,它也可以在KitKat上正常工作。但是当手机处于深度睡眠状态时,在KitKat上,WakefullBroadcastReceiver会启动挂在Thread.sleep的服务。之后没有任何事情发生,服务永远不会停止。
我尝试了很多东西而不是Thread.sleep这样的object.wait,定时器或第二个WakefullBroadcastReceiver用于第二个服务来禁用Wi-Fi但是一切都导致我的手机重启!我也将targetSdkVersion改为18,但没有区别。
我的代码是:
public class Awservice extends IntentService {
public static final String PREFS = "Prefs";
private MyReceiver alarm;
SharedPreferences mSettings;
public Awservice() {
super("Awservice");
}
@Override
protected void onHandleIntent(Intent intent) {
alarm = new MyReceiver();
mSettings = getSharedPreferences(PREFS,0);
int api = android.os.Build.VERSION.SDK_INT;
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
boolean manualState = mSettings.getBoolean("PREFS_MANUALON", true);
String strDur = mSettings.getString("PREFS_DURATION", "").toString();
Long Duration = Long.parseLong(strDur)*60*1000;
ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo NetWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (manualState==true) {
if (NetWifi.isConnected()) {
alarm.SetAlarm(this);
} else {
wifi.setWifiEnabled(true);
alarm.SetAlarm(this);
Thread.sleep(Duration);
wifi.setWifiEnabled(false);
}
} else {
wifi.setWifiEnabled(true);
Thread.sleep(Duration);
wifi.setWifiEnabled(false);
}
MyReceiver.completeWakefulIntent(intent);
}
}
请帮我解决这个问题。我已经没想完了。