我想让这段代码在后台运行。我不知道如何创建服务或Asynstask,因为它只需要这段代码,而不是所有其他代码。
void StartTimer()
{
int minsTicks=CountM*60*1000;
int hoursTicks=CountT*60*60*1000;
int totalTicks=hoursTicks+minsTicks;
mTextField = (TextView) findViewById(R.id.TimerTextView);
CountDownTimer aCounter = new CountDownTimer(totalTicks, 1000)
{
public void onTick(long millisUntilFinished)
{
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish()
{
try
{
mTextField.setText("Kaffe Maskinen er igang");
mmOutputStream.write('2');
Thread.sleep(900000);
mmOutputStream.write('0');
mTextField.setText("Kaffe Maskinen er slukket");
}
catch (IOException e) {} catch (InterruptedException e) {}
}
};
aCounter.start();
}发布于 2012-05-24 17:11:42
以下是AsyncTask的代码片段
private class AsyncTaskEx extends AsyncTask<Void, Void, Void> {
/** The system calls this to perform work in a worker thread and
* delivers it the parameters given to AsyncTask.execute() */
@Override
protected Void doInBackground(Void... arg0) {
StartTimer();//call your method here it will run in background
return null;
}
/** The system calls this to perform work in the UI thread and delivers
* the result from doInBackground() */
@Override
protected void onPostExecute(Void result) {
//Write some code you want to execute on UI after doInBackground() completes
return ;
}
@Override
protected void onPreExecute() {
//Write some code you want to execute on UI before doInBackground() starts
return ;
}
}在你的Activity中编写这个类,然后调用你想要执行方法的地方
new AsyncTaskEx().execute();发布于 2012-05-24 17:18:09
你可以像这样在后台执行你的代码:
private class GetLoginResponse extends AsyncTask<Void, Void, Boolean> {
@Override
protected void onPreExecute() {
// whatever code u want to execute before background code
// starts executing
}
@Override
protected Boolean doInBackground(Void... params) {
int minsTicks=CountM*60*1000;
int hoursTicks=CountT*60*60*1000;
int totalTicks=hoursTicks+minsTicks;
mTextField = (TextView) findViewById(R.id.TimerTextView);
CountDownTimer aCounter = new CountDownTimer(totalTicks, 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText("seconds remaining: "
+ millisUntilFinished / 1000);
}
public void onFinish() {
try {
mTextField.setText("Kaffe Maskinen er igang");
mmOutputStream.write('2');
Thread.sleep(900000);
mmOutputStream.write('0');
mTextField.setText("Kaffe Maskinen er slukket");
} catch (IOException e) {
} catch (InterruptedException e) {
}
}
};
aCounter.start();
}
@Override
protected void onPostExecute(Boolean data) {
// Here you can execute what you want to execute
// after the background task completes
}
}// end AsyncTask
new GetLoginResponse.execute();https://stackoverflow.com/questions/10733682
复制相似问题