如何在android中运行后期线程

时间:2013-07-04 12:34:37

标签: android performance

在我的代码中,我有一个帖子。你可以看到线程的代码,

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);

但我想为这个帖子留出时间。这意味着当主要活动运行时,我希望延迟运行此线程。我知道它可以使用睡眠方法。但是我怎么能像这样运行这个线程。 我遇到了这个问题。 请给我答案。感谢

3 个答案:

答案 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
            }
        };