java - Android 在特定时间后启动/停止重复线程

标签 java android multithreading scheduled-tasks

我需要一个线程在 30 秒后重复从 Web 服务加载数据。 我想停止并启动线程 onResume 和 onPause,以便它在屏幕处于 Activity 状态时运行,并在 Activity 暂停时禁用它。恢复时重新启动。

new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            dataIfInternet(refreshTop);
        }

    }, 30000);

Activity 暂停时如何停止它。

最佳答案

您无法暂停处理程序,因此您需要在onPause中取消它,然后在onResume中再次发布

所以你可能想要这样的东西:

private Handler myHandler = new Handler();

在你的onResume()

Runnable myRunnable = new Runnable()
{
    @Override
    public void run() 
    {
        dataIfInternet(refreshTop);
    }
};
myHandler.postDelayed(myRunnable, 30000);

并在您的onPause()

// Cancel the runnable
myHandler.removeCallbacks(myRunnable);

希望这能解决您的问题

关于java - Android 在特定时间后启动/停止重复线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39635674/

相关文章:

java - 如何合并两个 equals() 但不相同的独立实体?

java - 为什么 .getClass 强制我使用扩展?

java - 将 Java 嵌入到 C++ 应用程序中?

java - 有没有办法让 Java 线程只在初始化时执行某些操作?

java - 这个 Spring Oauth2 配置文件有什么问题?

java - 模糊展开的 RecyclerView 项目的周围(模糊 RecyclerView 除了其中一项)

android - 如何从android内存中选择一个文件对其进行一些操作

android - Android中如何通过TabLayout使用TabItem

c++ - 在范围锁定之前检查可选的互斥锁

linux - Linux 中的 pthread 概念