android - 在android中多次使用Runnable,它对内存有影响

标签 android multithreading memory runnable

我定义了一个 Runnable,它在单击按钮后启动, 它每 1 秒更改一次 ImageView 的图像。 在我的 View 中还有另一个按钮,当用户单击该按钮时,我再次启动该 Runnable,但这次它每 2 秒更改一次 ImageView 的图像,依此类推。

我的问题是:当我点击第二个按钮时,现在我必须运行单个线程还是它只是停止 Runnable 的第一个实例并启动另一个实例?

注意:我在 android 中阅读了一些关于线程和 Runnable 的主题,但我仍然不清楚它们之间的区别。 还阅读这个问题及其答案让我听到问我自己的问题。 Java - Running a thread twice

抱歉英语不好。

我的代码的可运行部分:

private final Runnable mRunnable = new Runnable() {

    public void run() {
        if (mIsFlashOn) {
                if (mSwap) {
                    mImageViewBeam.setVisibility(View.VISIBLE);
                    mSwap = false;
                    mHander.postDelayed(mRunnable, 10000 / ((mStrobeCounter * 5) + 10));
                } else {
                    mImageViewBeam.setVisibility(View.GONE);
                    mSwap = true;
                    mHander.postDelayed(mRunnable, 10000 / ((mStrobeCounter * 5) + 10));
                }
        }
    }
};

最佳答案

我认为你需要使用 mHandler.removeCallbacks(mRunnable); 这一行来删除第一个 runnable ,然后开始另一个

关于android - 在android中多次使用Runnable,它对内存有影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36364089/

相关文章:

multithreading - C++11 异步段错误

c++ - 查找内存分配错误

c - 在 C 中以 64 位平台为目标时,对数组引用使用 64 位变量是否更好?

c# - 无法定位 Android 应用中内存泄漏的原因

android - 我可以使用哪种编程语言来开发 android 和 ios 应用程序作为前端和 django 作为后端?

java - 从Firebase数据库获取最后一个节点到textview android

java - Activity被fragment隐藏了,无法使用

ios - 动态识别 NSoperation

c++ - Windows.h 线程关联

java - 尽管我下载了 jar 文件,但我无法导入改造 RestAdapter