用于启动/停止AsyncTask的Android Handler接口

时间:2017-01-23 21:45:19

标签: android-asynctask android-handler

我是Android界的全新人物需要帮助如何创建&添加一个用于停止&每10Sec重启一次Asynctask。而它的活跃(在屏幕触摸事件之前)。

我的AsyncTask用于每2秒更改一次屏幕背景颜色。如下。我正在使用Button.onClick来启动AsyncTask&任何屏幕触摸事件以后都会阻止它。

public class MyAsynTask extends AsyncTask<Void, Void, Void> {

    @Override
    protected Void doInBackground(Void... params) {
        Runasync = true;
        while (Runasync) {
            if (isCancelled()) {
                break;
            }
            try {

                    Thread.sleep(2000);

            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            publishProgress();
        }
        return null;
    }


    @Override
    protected void onProgressUpdate(Void... values) {
        ChangeBackgroudColor();  //Calling Method to change the background color.
    }
}

1 个答案:

答案 0 :(得分:0)

您可以创建一个Timer & TimerTask,间隔为10秒。

在主线程中创建如下所示的Handler

enter image description here

在处理消息中实现START_ASYNC_TASK消息的功能Switch - Case并取消现有的Asynctask并在此处启动新的asynctask。

enter image description here

在TimerTask中使用mHandler.post()方法将消息发布到UI线程。

在您的活动覆盖中