如何在Android中停止可运行线程?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Android中停止可运行线程?相关的知识,希望对你有一定的参考价值。

我创建了一个runnable线程,以通过在首页中自动循环更改/滑动View Pager的位置。

在我的应用程序中,当单击注销按钮时,我想停止该线程。

我已经尝试过removecallback方法,但该应用有时仍会崩溃。

还有其他解决方案吗?

下面是我的代码:

final Handler offers1Handler = new Handler();

Runnable offers1Runnable;

private void setLooping() {

    offers1Runnable = () -> scrollPager(binding.contentHome.offers1ViewPager);
    Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                offers1Handler.postDelayed(offers1Runnable, 1000);

            }
       },500, 3000);

   }

}


private void onLogout(){
    offers1Handler.removeCallbacks(offers1Runnable);
}
答案

如果您想自行取消计时器,则可以使用cancel方法。

Runnable不是线程,它只是运行一个方法。 Timer是线程的一种工具,用于计划任务以供将来在后台线程中执行。如果要取消,则实际上要取消Timer。如文件所述:

如果调用者想快速终止计时器的任务执行线程,则调用者应调用计时器的cancel方法。

如果调用cancel方法。它的执行线程正常终止,并且无法在其上安排更多任务。

以上是关于如何在Android中停止可运行线程?的主要内容,如果未能解决你的问题,请参考以下文章

如何在可观察线程结束之前停止应用程序?

Android Studio - 如何从片段中停止 handler.postDelayed?

如何停止通过实现可运行接口创建的线程?

如何停止这个线程?

Android如何停止线程的方式

恢复片段后android地图停止响应