我需要一个在固定时间(例如每 1 秒)执行的作业。
我知道我可以通过Timer
或来实现这一点AsyncTask
。
但是,我必须在创建视图时开始工作。但我想知道我在哪里可以停止这项工作?由于我还没有找到android.view.View
.
什么是替代解决方案?
我有一个可供其他人使用的自定义视图,一旦视图聚焦,我必须启动一个Timer
或一个,并在视图不可见时停止后台作业。AsyncTask
我需要一个在固定时间(例如每 1 秒)执行的作业。
我知道我可以通过Timer
或来实现这一点AsyncTask
。
但是,我必须在创建视图时开始工作。但我想知道我在哪里可以停止这项工作?由于我还没有找到android.view.View
.
什么是替代解决方案?
我有一个可供其他人使用的自定义视图,一旦视图聚焦,我必须启动一个Timer
或一个,并在视图不可见时停止后台作业。AsyncTask
查看可以覆盖的方法。
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);
}
public class A extends AsyncTask<Void,Void,Void>
{
void doInBackground(..)
{
do
{
Thread.sleep(1000);
//Your Work
}while(condition);
}
}
如果您想停止活动,则将一个布尔值返回给 onPostExecute 并停止您正在做的工作。
由于您activity
有 View 实例,请调用一个方法View
来让视图类知道活动被破坏或停止,具体取决于您的要求。
private View mView;
public void onDestroy {
super.onDestroy();
mView.stopCounter();
}
public void onStop() {
super.onStop();
mView.stopCounter();
}