我想要一个android应用程序,只要按下按钮,背景就会闪烁。这有效,但是当我释放按钮时,背景不会停止闪烁。 我认为原因是我正在使用线程。我不知道如何阻止它(我正在第一次使用线程)。我想我可以在Action_Up事件中编写按钮“threadname.stop()”,但Android studio无法解析名称。 所以:我怎样才能停止线程,使Action_Up案例得到执行? 非常感谢!一旦按钮不再被按下,我怎样才能停止线程?
我的MainActivity代码:
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
public class MainActivity extends AppCompatActivity {
Button flash;
RelativeLayout layout;
boolean backgroundisblack;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
backgroundisblack = true;
layout = (RelativeLayout)findViewById(R.id.layout);
flash = (Button)findViewById(R.id.flash);
//Button
flash.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//button is pressed
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:{
//thread
Thread t = new Thread(){
@Override
public void run(){
while(!interrupted()){
try {
Thread.sleep(1000);
runOnUiThread(new Runnable(){
@Override
public void run(){
//action
if(backgroundisblack){
layout.setBackgroundColor(Color.WHITE);
backgroundisblack = false;
}else if (!backgroundisblack){
layout.setBackgroundColor(Color.BLACK);
backgroundisblack = true;
}
}
});
}catch (InterruptedException e){
e.printStackTrace();
}
}
}
};
t.start();
break;
}
//button is released
case MotionEvent.ACTION_UP:{
layout.setBackgroundColor(Color.BLACK);
break;
}
}
return false;
}
});
}
}
可能的重复[你如何杀死Java中的线程?](https://stackoverflow.com/questions/671049/how-do-you-kill-a-thread-in-java) – user1643723