Java 如何停止线程并在线程中通过Toast正确显示文本?

Java 如何停止线程并在线程中通过Toast正确显示文本?,java,Java,我需要解决方案来停止我的线程和显示吐司 为什么不停止我的线程 为什么我的解决方案没有通过Toast显示“成功” 这是我的类StopperThread,我尝试通过闪烁我的线程停止 public class StopperThread implements Runnable{ private Context context; private volatile boolean blinker; public StopperThread(Context context

我需要解决方案来停止我的线程和显示吐司

  • 为什么不停止我的线程
  • 为什么我的解决方案没有通过Toast显示“成功”

这是我的类StopperThread,我尝试通过闪烁我的线程停止

public class StopperThread implements  Runnable{

    private Context context;
    private volatile boolean blinker;

    public StopperThread(Context context){
        this.context = context;
        this.blinker = true;
    }

    @Override
    public void run ()
    {
        Looper.prepare();
        try {
            while(blinker) {
                Log.e("LOG","ACTIVE");
                Thread.sleep(1000);
                Toast.makeText(context, "success", Toast.LENGTH_SHORT).show();
            }

        } catch (InterruptedException e) {
            e.printStackTrace();
            blinker = false;
        }
        Looper.loop();
    }

    public void mystop() {
        blinker = false;

    }
}

这是我在创建线程的活动中单击按钮的方法

 private  void clickedButton() {
  final StopperThread stopperThread = new StopperThread(this);
    Thread t1 = new Thread(stopperThread);

    if(click)
    {
        t1.start();
        click = false;
    }
    else
    {
        try {
            stopperThread.mystop();
            t1.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
      click = true;
    }
}
我试图改变

/*First Try*/
 final StopperThread stopperThread = new StopperThread(getApplicationContext());


如果(click==true),则单击
中的变量是什么?(另外,
if(click)
如果是布尔值也会做同样的事情)click何时设置为false?我忘记了复制变量-click。我缩小了代码的可读性。当用户单击按钮@MadProgrammertry使用线程中的
runOnUIThread()
更新GUI或传递
ApplicationContext
而不是
StopperThread()
中的
应用于显示
Toast
。不要运行另一个线程。
/*Second Try*/
 runOnUiThread(new Runnable() {
        @Override
        public void run() {
            t1 = new Thread(stopperThread);
        }
    });