Если я делаю новую загрузку на эмулируемом устройстве, оно получает правильное текущее время из ОС хоста; однако если я перезагружаю устройство из моментального снимка, оно получает время/дату с момента создания моментального снимка (например, когда я выключаю эмулятор). Время/дата не синхронизируются по прошествии какого-либо времени. Единственный способ обойти это, который я нашел, - вручную обновлять время после восстановления из моментального снимка.
Виртуальное устройство Android имеет свойства по умолчанию:
Target = Android 4.0.3 - API Level 15
CPU/ABI = ARM (armeabi-v7a)
SD Card = N/A
Snapshot = Enabled
Abstract LCD density = 240
Max VM application heap size = 48
Device RAM size = 512
Я пробовал эмулятор на OS X Snow Leopard и Windows 7, оба показывают ту же проблему. Есть ли способ заставить эмулятор автоматически синхронизировать время после восстановления из моментального снимка?
Проголосовал ответ Артона.
Кажется, что эмулятор теряет синхронизацию, когда хост-машина переходит в спящий режим.
Я лично использую для этого следующую программу.
public class AdbShellDateNow {
public static void main(final String[] args)
throws java.io.IOException, InterruptedException {
final long now = System.currentTimeMillis() / 1000L;
final ProcessBuilder builder =
new ProcessBuilder("adb", "shell", "date", Long.toString(now));
builder.redirectErrorStream(true);
builder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
final Process process = builder.start();
process.waitFor();
}
}