当前位置: 首页 > 知识库问答 >
问题:

寻找停止/终止线程的方法

巫马阳飙
2023-03-14

我正在寻找一种方法来停止/杀死线程,我看到Thread.stop()已被弃用。所以我开始寻找另一个解决方案,并看到多个帖子建议这样做:

thread.interrupt();
thread = null;

但这不会阻止我的线程,我的线程看起来像这样:

public static Thread loadingSpinnerTimer (final Context context, final ImageView imageView){
    final Handler mHandler = new Handler();
    thread = new Thread(new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            while (!isPaused) {
                try {
                    Thread.sleep(100);
                    mHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            // Write your code here to update the UI.
                            Log.e("ThreadMessage","HasRun");
                            if (ticker == 12){
                                ticker = 0;
                            }
                            Bitmap myBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.spinner_160x160);
                            Bitmap img = Bitmap.createBitmap(myBitmap.getWidth(), myBitmap.getHeight(), Bitmap.Config.ARGB_8888); //ARGB_8888 transparrent?
                            Canvas canvas = new Canvas(img);
                            int offset = myBitmap.getWidth()*ticker;
                            Rect srcrectangle = new Rect( 0, offset, myBitmap.getWidth(), myBitmap.getWidth()+offset);
                            Rect dstrectangle = new Rect( 0, 0, myBitmap.getWidth(), myBitmap.getWidth());
                            canvas.drawBitmap(myBitmap,srcrectangle,dstrectangle,null);
                            img.setHeight(myBitmap.getWidth());
                            imageView.setImageDrawable(new BitmapDrawable(context.getResources(), img));
                            ticker++;
                        }
                    });
                } catch (Exception e) {
                    // TODO: handle exception
                }
            }
        }
    });
    thread.start();
    return thread;
}

有人得到我可以用来停止/杀死我的线程的解决方案吗?非常感谢任何帮助。

共有1个答案

云炜
2023-03-14

您有一个 while 循环,检查已暂停,然后在循环结束时捕获常规异常。即使抛出中断异常,它也将被捕获,然后再次重新运行 while 循环。

当您捕获InterruptedException异常时,您需要将isPause更改为true,以便while循环停止运行。

 类似资料:
  • 本文向大家介绍C#停止线程的方法,包括了C#停止线程的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#停止线程的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 主要内容:1 什么是Java终止线程,2 Thread类终止线程的方法,3 Java终止线程的例子1,4 Java终止线程的例子2,5 Java终止线程的例子3,6 isInterrupted和interrupted方法1 什么是Java终止线程 如果任何线程处于睡眠或等待状态(即,调用sleep()或wait()方法),则在线程上调用interrupt()方法,会抛出InterruptedException中断睡眠或等待状态。如果线程未处于睡眠或等待状态,则调用interrupt()方法将执行

  • 问题内容: 我正在编写一段连接到服务器的代码,使用该连接会生成一堆线程并执行一堆“工作”。 在某些情况下,连接失败,我需要停止所有操作并从头开始创建新对象。 我想在对象之后进行清理,但在线程上调用thread.stop,但是此方法似乎已被弃用。 推荐的替代方法是什么?是否应该为每个线程编写自己的清理和退出方法?将线程设置为null?或者是其他东西? 问题答案: 看这里 : 在HowToStopAT

  • 我正在尝试流式传输从FFmpeg编码的Webm视频文件。 然而,当我寻找到一个未被缓冲的位置时,视频播放停止。 我已验证是否下载了正确的字节范围。 知道是什么引起的吗?在x264中编码的mp4文件中,查找工作完美无瑕。Webm似乎是个问题。可能是视频编码方式有问题。 ffmpeg-i输入。mp4-编解码器:v libvpx-质量最佳-b:v 4000k-qmin 10-qmax 42-最大速率40

  • 嗨,我有个大问题, 我一直在创建一个自动化脚本,并在构建过程中对其进行测试。我已经完成了第109行,现在第64行已经开始失败。 这条线路之前已经工作了很多次,在没有任何真实信息帮助解决的情况下突然停止。 这是我使用xpath从中提取元素的代码 我使用以下代码使用xpath选择列表中的第一项 这行代码一整天都运行得很好,现在每次执行脚本都会失败。我现在得到一个错误,没有找到元素。 当我导航到页面并使

  • 实际上,我正在开发一个应用程序,它需要处理一个NFC标签,使用户能够使用这个应用程序。 这个活动是在应用程序启动和简历时调用的。 编辑:我注意到这是因为,即使屏幕没有变黑,cpu或NFC阅读器进入睡眠模式,我也必须锁定和解锁手机,使它再次工作,我现在正在寻找一种方法,使cpu一直运行,我已经尝试过: 仅适用于Galaxy Xcover 3(Android 6.0.1) 我仍然无法使它在Galaxy