java - 在 Recycler Adapter 中获取 Activity onDestroy()

标签 java android kotlin android-recyclerview

我正在使用处理程序在 RecyclerView 列表项中显示计时器。当我按回时,承载 RecyclerView 的 Activity 被完全销毁,Handler() 仍在后台运行。该处理程序在 ViewHolder 中创建并启动。有什么方法可以从 ViewHolder 本身中删除处理程序的回调吗?

我的ViewHolder示例代码

class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), CustomRunnable.CustomRunnableListener{

    private val handler = Handler()
    lateinit var customRunnable: CustomRunnable //custom runnable for my timer logic

    fun bind(position: Int, listModelClass: ModelClass?){


        if(someCondition){
                customRunnable = CustomRunnable(handler, this, textView, listModelClass)
                handler.postDelayed(customRunnable, 1000)
        }

    }

    override fun onTimerFinish(listModelClass: ModelClass) {
            // I get this call back when the timer finishes
            handler.removeCallbacks(customRunnable)
    }

}

最佳答案

据我所知,当 RecyclerView 与 Activity 分离时,适配器上没有调用任何方法。

尝试在 BaseActivityApplication 类中创建一个计时器对象或对象列表,并在按 onBack 后运行一个将停止该计时器的方法。

//Declare timer
    CountDownTimer cTimer = null;

    //start timer function
    void startTimer() {
        cTimer = new CountDownTimer(30000, 1000) {
            public void onTick(long millisUntilFinished) {
            }
            public void onFinish() {
            }
        };
        cTimer.start();
    }


    //cancel timer
    void cancelTimer() {
        if(cTimer!=null)
            cTimer.cancel();
    }

关于java - 在 Recycler Adapter 中获取 Activity onDestroy(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58389530/

相关文章:

java - 包含来自另一个项目的包 Spring boot gradle Intellij

java - sqlite 查询中的无效字符?

android 改变拍照尺寸

java - 我如何从 Intent 中获得额外的(作为 Long 类型)?

android - 带有 ViewModel 和 Lifecycleowner 的应用程序小部件

java - 如何更改添加到 JFrame 的每个组件的大小?

java - 调用同一台机器上运行的其他java应用程序的服务

android - 是否可以从 http header 识别 Android 应用程序?

android-studio - Android Studio代码编辑器发生无法读取的代码意外

android - RxJava2 定时器和 combineLatest