我一直在試圖創建一個自定義秒錶,在android計數。它需要相當精確至0.1秒,並且數字示例中使用了自定義佈局和圖像:DIGITS。Android定時器/秒錶,自定義用戶界面和令人滿意的性能
它還需要能夠在應用程序最小化或關閉後在後臺運行。更具體地說,強制應用程序保持打開,而計時器打開(我不知道如何實現這一點)。
到目前爲止,我已經嘗試過使用Handlers,Runnables,scheduledExecutorService和android Chronometer類。
處理程序有性能方面的問題,咀嚼45%> CPU使用率(我認爲這是因爲UI不斷更新?)。我設法使用具有適度性能的scheduledExecutorService來工作,但它仍然存在在後臺或方向更改期間繼續存在的問題。
我想創建一些類似HTC一個M7的默認時鐘秒錶。它可以在後臺和方向更改期間工作,不會浪費任何時間。
計時器將在其活動中使用ViewPager和滑動標籤佈局在其自己的片段中。
這是可運行爲秒錶
public Runnable run() {
return new Runnable() {
@Override
public void run() {
centiseconds++;
if (centiseconds > 9) {
centiseconds = 0;
seconds++;
}
if (seconds > 59) {
seconds = 0;
minutes++;
}
if (minutes > 59) {
minutes = 0;
hours++;
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
updateCustomUI();
}
});
}
};
}
在片段然後我初始化ScheduledExecutorService的
ScheduledFuture scheduledFuture;
ScheduledExecutorService scheduledExecutorService;
要啓動定時器
scheduledFuture = scheduledExecutorService.scheduleAtFixedRate(run(), 0, 100, TimeUnit.MILLISECONDS);
,並阻止它
scheduledFuture.cancel(true);
當顯示器關閉或您的應用程序在後臺運行時,您的代碼將失敗,因爲Android會停止它,並且您的計數代碼也會停止。使用CountDownTimer而不是您自己的二次計數代碼。 – Robert
這隻會對倒計時有用嗎?我將如何執行它以計數UP? (如在秒錶中)。 –
閱讀文檔,你會看到有一個'onTick()'方法可以被觸發1000毫秒。 – Robert