0

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

我知道我可以通过Timer或来实现这一点AsyncTask

但是,我必须在创建视图时开始工作。但我想知道我在哪里可以停止这项工作?由于我还没有找到android.view.View.

什么是替代解决方案?


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

4

3 回答 3

0

查看可以覆盖的方法。

onWindowVisibilityChanged看起来onWindowFocusChanged很有帮助。

@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);
}
于 2013-05-22T02:17:37.747 回答
0
public class A extends AsyncTask<Void,Void,Void>
{
     void doInBackground(..)
     {
        do
        {
           Thread.sleep(1000);
           //Your Work
        }while(condition);
      }
}

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

于 2013-05-20T04:17:22.857 回答
0

由于您activity有 View 实例,请调用一个方法View来让视图类知道活动被破坏或停止,具体取决于您的要求。

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

public void onStop() {
    super.onStop();
    mView.stopCounter();
}
于 2013-05-20T02:58:17.703 回答