1
我正在開發一個Android應用程序,我需要顯示剩餘時間,用戶可以在其中完成某個倒計時器的任務。如果用戶超過規定的時間,計時器應該開始計數或成爲天文臺。所以,我需要在同一個組件中使用兩者。計時器在API級別24中添加了setCountdown方法,但我無法使用它。有人可以提供一些庫參考或一些代碼,我可以找到一種方法來實現我的用例。在Android應用程序中同時使用計時器和倒計時器
我正在開發一個Android應用程序,我需要顯示剩餘時間,用戶可以在其中完成某個倒計時器的任務。如果用戶超過規定的時間,計時器應該開始計數或成爲天文臺。所以,我需要在同一個組件中使用兩者。計時器在API級別24中添加了setCountdown方法,但我無法使用它。有人可以提供一些庫參考或一些代碼,我可以找到一種方法來實現我的用例。在Android應用程序中同時使用計時器和倒計時器
可以使用的AsyncTask適用於實時decreases..i我張貼這裏舉例爲此,消防廣播:
/*******************
* asyncTask for timer
********************/
public class MyTimer extends AsyncTask<String, String, String> {
private AsyncTimer asyncTimer;
private Context context;
public MyTimer(Context context) {
asyncTimer = (AsyncTimer) context;
this.context = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
asyncTimer.updateUi(false); //updates UI
}
@Override
protected void onPostExecute(String s) {
asyncTimer.updateUi(true);
}
@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
int time = Integer.parseInt(values[0]);
Intent i = new Intent(Constants.BROADCAST_TIMER_KEY);
i.putExtra(Constants.INTENT_BROADCAST_TIME, time);
context.sendBroadcast(i);
}
@Override
protected String doInBackground(String... params) {
long i = Integer.parseInt(params[0]);
while (i >= 0) {
publishProgress(String.valueOf(i));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
i = i - 1;
}
return null;
}
}
廣播更改時間,其中TimeSet是我的界面來改變UI
值public class BroadcastTimer extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
TimeSet timeSet = (TimeSet) context;
int time = intent.getExtras().getInt(Constants.INTENT_BROADCAST_TIME);
int min = (time)/60;
int sec = time % 60;
timeSet.FinalResult(min + context.getString(R.string.str_mins) + sec + context.getString(R.string.str_secs));
}
}