如何在Android中正常停止Timer的可运行状态?

问题描述 投票:0回答:1

我创建了一个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);
}
android runnable android-handler
1个回答
0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.