仅需指出几个正确的方向,并展示到目前为止的工作。
我的目标:
我的问题:
在运行计时器的服务中,是否应该使用线程在其中运行代码? 另外,如果是这样,我应该在一个线程中运行Timer,然后在另一个线程中触发新代码吗?
对于服务中的计时器代码,我应该只使用AlarmManager (OR)还是CountdownTimer (OR),如果我使用某种PendingIntent (OR)某种ASyncTask (OR)使用系统时钟来确定实际经过的时间?我不确定执行此操作的最佳方法,方法很多。
到目前为止我的工作
在Button代码中,我将输入到editText中的值转换为表示以分钟为单位输入的时间的int值,然后返回到String,以便可以使用带有Intent的putExtra将其传递给服务。
//识别EditText EditText editText_timerValue; editText_timerValue =(EditText)findViewById(R.id.editText_timerValue);
// MAKE SURE A VALUE HAS BEEN ENTERED, AND AVOID NullPointerException
if (editText_timerValue != null) {
// CONVERT USER-DATA FROM THE EditText TO AN INT
int int_timerValue_Ms;
int_timerValue_Ms = Integer.parseInt(editText_timerValue.getText().toString());
// CONVERT USER-DATA FROM (Integer = MilliSeconds) TO (Minutes)
int int_timerValue_Min;
int_timerValue_Min = int_timerValue_Ms * 60000;
// CONVERT INT BACK TO A STRING SO IT CAN BE PASSED USING putExtra
String string_timerValue_Min;
string_timerValue_Min = String.valueOf(int_timerValue_Min);
// DECLARE INTENT FOR STARTING THE TIMER SERVICE
Intent intent = new Intent(this, TimerService.class);
// PASS THE VALUE OF THE EditText WITH THE INTENT THAT STARTS SERVICE
intent.putExtra("TIMER_VALUE", string_timerValue_Min);
// START TIMER SERVICE (RUNS BACKGROUND TIMER, PERFORMS ACTIONS WHEN EXPIRED)
startService(intent);
// CLOSE THE CURRENT ACTIVITY, AS THE TIMER SERVICE RUNS IN THE BACKGROUND
finish();
// IF NO VALUE HAS BEEN ENTERED INTO THE EditText
} else {
Toast.makeText(MainActivity.this, "Please enter a Value in Minutes!", Toast.LENGTH_LONG).show();
}
我不太担心我的作品展示-我更关心应该如何设置计时器,因为从我那里收集到的信息有多种实现方法。