如果我想要一个条件不被检查两次该怎么办?

时间:2014-05-15 13:26:18

标签: android

我正在制作一个小项目,如果电池电量低于30%,我将设置wifi禁用。但如果用户再次启用wifi,我希望它不能再次禁用。 我在服务课上完成了这整个工作 我用的代码是...... 请提出任何建议。你的建议对我很有价值。

public class BatteryService extends Service
    boolean checkwifi;
    WifiManager mainWifi;

    public void onCreate() {
            // TODO Auto-generated method stub
            super.onCreate();
            checkwifi = true;
            mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);    
        }


    if (level <= 30 && !isCharging) {
                    tts.speak(" Battery LOw Connect Phone to Charger",
                            TextToSpeech.QUEUE_FLUSH, null);
                    if (checkwifi) {
                        mainWifi.setWifiEnabled(false);
                        bt.disable();
                        closemobiledata();
                        checkwifi = false;
                    }
}

更新1:

我发现了问题,问题是服务一次又一次地开始 该怎么做才能使服务不能一次又一次地开始

public class BatteryService extends Service
        boolean checkwifi;
        WifiManager mainWifi;

        public void onCreate() {
                // TODO Auto-generated method stub
                super.onCreate();
              Toast.makeText(getApplicationContext(), "Service created", Toast.LENGTH_SHORT).show();
                checkwifi = true;
                mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);    
            }


        if (level <= 30 && !isCharging) {
                        tts.speak(" Battery LOw Connect Phone to Charger",
                                TextToSpeech.QUEUE_FLUSH, null);
                        if (checkwifi) {
                            mainWifi.setWifiEnabled(false);
                            bt.disable();
                            closemobiledata();
                            checkwifi = false;
                        }
    }

2 个答案:

答案 0 :(得分:0)

android.net.wifi.WIFI_STATE_CHANGED事件创建接收器。如果禁用后激活了wifi,请使用SharedPreferences将userEnabledWifi设置为true。在您的服务中,在禁用wifi之前检查userEnabledWifi。如果电池电量高于%30,请再次将userEnabledWifi重置为false,以便在电池再次低于%30时禁用无线网络。

答案 1 :(得分:0)

区别是什么?您应该能够在服务中为电池事件注册接收器,就像对活动一样。例如:

private final BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent intent) {
    int rawLevel = intent.getIntExtra("level", -1);
    int scale = intent.getIntExtra("scale", -1);
    int status = intent.getIntExtra("status", -1);

if (rawLevel <= 30 && !isCharging) {
                    tts.speak(" Battery LOw Connect Phone to Charger",
                            TextToSpeech.QUEUE_FLUSH, null);
                    if (checkwifi) {
                        mainWifi.setWifiEnabled(false);
                        bt.disable();
                        closemobiledata();
                        checkwifi = false;
                    }
        // Do something
    }
};

public void onCreate() {
    registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}

public void onDestroy() {
     unregisterReceiver(this.mBatInfoReceiver);
}