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);
}
});