如何在android视图中启动/停止Timer / AsyncTask

时间:2013-05-20 02:38:04

标签: android asynchronous view

我需要一个在固定时间(例如每1秒)执行的工作。

我知道我可以通过TimerAsyncTask来实现这一点。

但是我必须在创建视图时启动作业。但我想知道我可以在哪里停止这项工作?由于我没有找到android.view.View的生命周期。

什么是替代解决方案?


我有一个可供其他人使用的自定义视图,我必须在视图聚焦后启动TimerAsyncTask,并在视图不可见时停止后台作业。

3 个答案:

答案 0 :(得分:0)

由于您的activity具有View实例,因此请调用View方法,让您知道根据您的要求查看活动被销毁或停止的类。

private View mView;
public void onDestroy {
    super.onDestroy();
    mView.stopCounter();
}

public void onStop() {
    super.onStop();
    mView.stopCounter();
}

答案 1 :(得分:0)

public class A extends AsyncTask<Void,Void,Void>
{
     void doInBackground(..)
     {
        do
        {
           Thread.sleep(1000);
           //Your Work
        }while(condition);
      }
}

如果你想停止活动,则将一个布尔值返回给onPostExecute并停止你正在做的工作。

答案 2 :(得分:0)

查看可以覆盖的方法。

onWindowVisibilityChangedonWindowFocusChanged看起来很有帮助。

@Override
protected void onWindowVisibilityChanged(int visibility)
{
    super.onWindowVisibilityChanged(visibility);

    switch(visibility)
    {
        case VISIBLE: /* code */ break;

        case INVISIBLE: /* code */ break;

        case GONE: /* code */ break;
    }
}

@Override
public void onWindowFocusChanged(boolean hasWindowFocus)
{
    super.onWindowFocusChanged(hasWindowFocus);
}