如何在android视图中启动/停止计时器/异步任务

如何在android视图中启动/停止计时器/异步任务,android,asynchronous,view,Android,Asynchronous,View,我需要一个在固定时间执行的作业(例如,每1秒执行一次) 我知道我可以通过定时器或异步任务来实现这一点 但是,我必须在创建视图时启动作业。但我想知道我在哪里可以停止这项工作?因为我还没有找到android.view.view的生命周期 替代方案是什么 我有一个可供其他人使用的自定义视图,我必须在视图聚焦后启动计时器或异步任务,并在视图不可见时停止后台作业。因为您的活动有视图实例,调用View方法,让View类知道活动已被销毁或停止,具体取决于您的需求 private View mView; pu

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

我知道我可以通过
定时器
异步任务
来实现这一点

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

替代方案是什么



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

因为您的
活动
有视图实例,调用
View
方法,让View类知道活动已被销毁或停止,具体取决于您的需求

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

public void onStop() {
    super.onStop();
    mView.stopCounter();
}
公共类A扩展异步任务
{
虚空背景(…)
{
做
{
睡眠(1000);
//你的作品
}while(条件);
}
}

如果要停止该活动,请向onPostExecute返回一个布尔值,并停止正在执行的工作。

查看可以覆盖的方法

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);
}

它是什么类型的应用程序?为什么您需要知道某个
视图的“生命周期”?你指的是
活动
?我不是指
活动
。因为我在自定义视图的构造函数上创建了一个计时器,并且在释放视图时必须停止它。所以
活动
将继续运行,但
视图
将被销毁?这是什么类型的
视图
?它是如何显示的。解释你的程序。@mrres1:我更新了帖子。
@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);
}