カウントダウンタイマーを保持するアクティビティをプログラムしようとしています。私はこれを新しいスレッドで作成します。アプリがバックグラウンドに送信されると、このカウントダウンタイマーはスレッド内を継続します。問題は、アクティビティを再開するときです。同じことをする別のスレッドを作成します。
したがって、新しいコピーを作成せずに、アプリがバックグラウンドに送信される前に作成された以前のスレッドを「回復」できる方法はありますか?
コードは次のとおりです。
public class MainActivity extends FragmentActivity{
private static final String TAG = Values.Tags.MAIN_ACTIVITY;
private TextView timeTextView;
final Handler mHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
// GENERAL ACTIVITY TASKS (all activities should do these).
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// MAIN_ACTIVITY TASKS.
timeTextView = (TextView) findViewById(R.id.activityMain_timer);
createThread();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void buttonPressed(View view){
DialogFragment newFragment = new TimePickerFragment();
newFragment.show(getSupportFragmentManager(), "timePicker");
}
public static class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Create a new instance of TimePickerDialog and return it
return new TimePickerDialog(getActivity(), this, 0, 0, true);
}
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Log.d(TAG, "set time");
getPickedTime(hourOfDay, minute);
}
}
public static void getPickedTime(int hourOfDay, int minute) {
Log.d(TAG, "Hora: "+hourOfDay+", minute: "+minute);
}
private void createThread() {
Thread thread = new Thread(){
public void run(){
try {
Thread.sleep(10000);
} catch (InterruptedException e){
Log.d(TAG, e.getMessage());
}
Log.d(TAG, this.getName()+ " is about to complete...");
mHandler.post(doAction);
}
};
thread.setName("thread00");
thread.start();
}
final Runnable doAction = new Runnable(){
public void run(){
Log.d(TAG, "Completed.");
}
};
}
ありがとう。