Я читал, что использование System.exit(0)
нахмурилось, когда дело доходит до Java и Android, но пока я не могу найти альтернативы тому, что я пытаюсь выполнить. Чтобы быть понятным, это для Watchface, который является просто сервисом, распространяющимся на CanvasWatchFaceService
. В этом случае я не могу позвонить finish()
. Я также пробовал stopService
и startService
без каких-либо успехов.System.exit (0) в Android Wear Watchface?
Проблема, которую я пытаюсь решить: Это хорошо известно, что изменение часовых поясов на устройстве не будет отражаться на это, если циферблат не будет перезапущен. В своем тестировании я обнаружил, что System.currentTimeMillis()
вполне буквально не реагирует на изменения часовых поясов в Android Wear. Сторону необходимо перезапустить, чтобы она отображала правильное время после изменения часового пояса.
Так что я построил систему со следующим кодом:
private final BroadcastReceiver timeChangeReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (!restarting) {
if (action.equals(Intent.ACTION_TIMEZONE_CHANGED)) {
if (upSeconds >= 15) {
System.exit(0);
} else {
restarting = true;
int delay = ((15 - upSeconds) * 1000);
new CountDownTimer(delay, delay) {
@Override
public void onTick(long millisUntilFinished) { }
@Override
public void onFinish() {
System.exit(0);
}
}.start();
}
}
}
}
};
Задержка в случае, если пользователь инициирует изменение часового пояса чаще, чем 15 секунд, в то время. Android Wear, похоже, обнаруживает выходы системы, которые являются слишком частыми, и заменяют часы «простым» наружным зеркалом.
Кажется, что отлично работает, Android Wear автоматически загружает рельеф заднего вида при выходе. Но в конечном итоге я хотел бы разместить это приложение в Google Play Store, поэтому я подумал, что должен убедиться, что здесь не играю с огнем.
Вы видели: http://stackoverflow.com/questions/11257449/system-exit-in-android? Возможный дубликат. –
Спасибо за ссылку! Это помогает, но это не полностью отвечает на мой вопрос. Мой вопрос касается «CanvasWatchFaceService» в Android Wear. – nope4561759
Весь код в [watchface training] (https://developer.android.com/training/wearables/watch-faces/drawing.html) отлично справляется с изменениями часового пояса. Почему, по-вашему, вам нужно выйти, чтобы получить время для обновления? – ianhanniballake