在我的代码中,我有一个帖子。你可以看到线程的代码,
public class MainAsyncHome extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
return null;
}
@Override
protected void onPostExecute(String xml) {
}
@Override
protected void onPreExecute() {
}
@Override
protected void onProgressUpdate(Void... values) {
}
}
我在主要活动onCreate方法中按以下方式运行此线程
new MainAsyncHome().execute(null);
但我想为这个帖子留出时间。这意味着当主要活动运行时,我希望延迟运行此线程。我知道它可以使用睡眠方法。但是我怎么能像这样运行这个线程。 我遇到了这个问题。 请给我答案。感谢
答案 0 :(得分:4)
使用Handler class,并定义Runnable handleMyAsyncTask,它将包含3000毫秒延迟后执行的代码:
mHandler.postDelayed(MainAsyncHome, 1000*3); //Delay of three seconds
答案来自here。
将它放在代码中:
private final static int INTERVAL = 1000 * 3; //3 seconds
Handler m_handler;
Runnable MainAsyncHome = new Runnable()
{
@Override
public void run() {
doSomething();
m_handler.postDelayed(MainAsyncHome, INTERVAL);
}
}
void startRepeatingTask()
{
MainAsyncHome.run();
}
void stopRepeatingTask()
{
mHandler.removeCallback(MainAsyncHome);
}
希望它有效。
答案 1 :(得分:0)
我通常使用CountDownTimer
,假设有3秒的延迟:
CountDownTimer timer = new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {
}
public void onFinish() {
//do things, start your Task
//remember we are still in the main thread!
}
}.start();
获取更多信息: http://developer.android.com/reference/android/os/CountDownTimer.html
答案 2 :(得分:0)
像这样使用CountDownTimer
。
在 onCreate 中启动计时器。
CountDownTimer timer=new CountDownTimer(Delay,TimeIntervalToCallOnTick) {
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
}
@Override
public void onFinish() {
// TODO Auto-generated method stub
//start your asynctask
}
};