我需要一个在固定时间(例如每1秒)执行的工作。
我知道我可以通过Timer
或AsyncTask
来实现这一点。
但是我必须在创建视图时启动作业。但我想知道我可以在哪里停止这项工作?由于我没有找到android.view.View
的生命周期。
什么是替代解决方案?
我有一个可供其他人使用的自定义视图,我必须在视图聚焦后启动Timer
或AsyncTask
,并在视图不可见时停止后台作业。
答案 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)
查看可以覆盖的方法。
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);
}