我讀過使用System.exit(0)
時談到Java和Android,但是到目前爲止,我無法找到替代品,我試圖完成。 要明確,這是一個Watchface,它只是一個延伸CanvasWatchFaceService
的服務。在這種情況下,我不能撥打finish()
。我也試過stopService
和startService
沒有成功。Android Wear Watchface中的System.exit(0)?
我試圖解決的問題:衆所周知,除非重新啓動,否則更改設備上的時區將不會反映在錶盤上。在我的測試中,我發現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商店中,所以我認爲我應該確保我不會在這裏玩火。
你見過:http://stackoverflow.com/questions/11257449/system-exit-in-android?可能的重複。 –
感謝您的鏈接!這有幫助,但它不能完全回答我的問題。我的問題是關於Android Wear中的CanvasWatchFaceService。 – nope4561759
[watchface training](https://developer.android.com/training/wearables/watch-faces/drawing.html)上的所有代碼都可以處理時區更改。爲什麼你認爲你必須退出才能獲得更新時間? – ianhanniballake