Календарная проблема, дата не сохраняется - PullRequest
0 голосов
/ 12 марта 2012

Итак, я писал код, чтобы сэкономить время, проведенное в сети Wi-Fi. Я почти там, за исключением того, что время не спасается правильно.

Этот объект получает широковещательную рассылку, после чего он проверяет, подключен ли он к точке доступа Wi-Fi. Он получает объект Date с моментом подключения. После отключения он получает дату, когда соединение было прервано.

Однако, когда он регистрирует дату начала и окончания, он всегда, кажется, получает текущую дату, также для стартового объекта:

private Date startDate;
private Date stopDate;
@Override
public void onReceive(Context context, Intent intent) {
    if (isOnline(context)) {
        WifiManager wifiManager = (WifiManager) context
                .getSystemService(Context.WIFI_SERVICE);
        android.net.wifi.WifiInfo wifiInfo = wifiManager
                .getConnectionInfo();
        Log.d("WIFI:", "IN FIRST IF, SO CONNECTED");
        if (wifiInfo.getSupplicantState() == (SupplicantState.COMPLETED)) {
            Calendar c = Calendar.getInstance();
            this.startDate = c.getTime();
            this.initialConnection = true;
        }
    } else if (this.initialConnection) {
        Calendar d = Calendar.getInstance();
        this.stopDate = d.getTime();
        //problem persists here
        String s = "TIME:" + d.getTime().toString() + " started at:"
                + startDate.toString() + "stopped at"
                + this.stopDate.toString();
        Log.d("WIFI:", s);
        this.initialConnection = false;
    }
}

выход

D/WIFI:   (  684): TIME:Mon Mar 12 13:18:16 GMT+02:00 2012 started at:Mon Mar 12 13:18:16 GMT+02:00 2012stopped atMon Mar 12 13:18:16 GMT+02:00 2012

Получает ли мой startTime текущее время, когда оно упоминается? Как я могу сохранить startTime?

1 Ответ

0 голосов
/ 12 марта 2012

Я не могу найти ничего плохого в использовании Календаря.Следующее SSCCE имеет правильное поведение.Должна быть проблема с логикой в ​​onReceive ().Возможно, первая половина вызывается снова, в результате чего startDate обновляется до текущего времени.

public class CalendarTest {
    private Date stopDate;
    private Date startDate;

    public void online() {
        Calendar c = Calendar.getInstance();
        this.startDate = c.getTime();
    }

    public void offline() {
        Calendar d = Calendar.getInstance();
        this.stopDate = d.getTime();
        String s = "TIME:" + d.getTime().toString() + "\nstarted at:"
                + startDate.toString() + "\nstopped at"
                + this.stopDate.toString();
        System.out.println(s);
    }

    public static void main(String[] args) {
        CalendarTest test = new CalendarTest();
        test.online();
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        test.offline();
    }
}

Вывод

TIME:Mon Mar 12 12:29:04 GMT 2012
started at:Mon Mar 12 12:29:01 GMT 2012
stopped atMon Mar 12 12:29:04 GMT 2012
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...