android - 自定义 View 可以知道 onPause 已被调用吗?

标签 android multithreading custom-view

我有一个自定义 View ,它运行一个线程操作,它定期调用互联网。我想知道是否有办法让我不必从父 Activity(onPause)中杀死该线程,以便在 Activity 被后台处理(和/或被杀死)后线程不会在后台运行。

这里的目的是让自定义 View 自给自足,不需要来自 Activity 的额外处理。这样做的方法是让它监听它的父级何时被后台处理,然后让线程中的无限 sleep 循环到期。我没有看到这样做的方法,但希望我忽略了一些东西。

最佳答案

Yes you can using below code,

@Override
protected void onVisibilityChanged(@NonNull View changedView, int visibility) {
    super.onVisibilityChanged(changedView, visibility);
    if (visibility == View.VISIBLE) //onResume called
    else // onPause() called
}

@Override
public void onWindowFocusChanged(boolean hasWindowFocus) {
    super.onWindowFocusChanged(hasWindowFocus);
    if (hasWindowFocus) //onresume() called
    else // onPause() called
}

@Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        // onDestroy() called
}

@Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
        // onCreate() called
}

关于android - 自定义 View 可以知道 onPause 已被调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22368720/

相关文章:

android - 异步任务等待短信

android - Flutter:SingleChildScrollView 内的 TabBarView

ios - NSURLSession 使用 NSOperation 委托(delegate) UI 线程

c - 矩阵中的多线程搜索,行索引未正确显示

iOS MVC 实现

java - 尝试从 Eclipse 到 Android Studio 执行 Android 应用程序的异常

android - 在 flutter 中仅显示图像的顶部部分

.net - 当代码在多台机器上运行时,用什么来代替 "lock"语句?

xcode - uinavigationbar 中的自定义背景非应用程序范围,每个 View 都不同

android - 如何将多个适配器放入一个适配器中