KitKat上的Thread.sleep

时间:2014-04-30 19:33:10

标签: android multithreading android-4.4-kitkat

我有一项服务,我想从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);
    }
}

请帮我解决这个问题。我已经没想完了。

0 个答案:

没有答案