Android 为什么一个线程只能启动一次?
对于每个Android虚拟机,我也会遇到Android 为什么一个线程只能启动一次?,android,multithreading,android-thread,Android,Multithreading,Android Thread,对于每个Android虚拟机,我也会遇到致命异常 java.lang.IllegalThreadStateException: Thread already started 滚动论坛和问题,我看到一个线程不能启动两次。我见过这样的答案: “多次启动线程不是一个好主意。” “一个线程只能调用一次。” 但是没有人说为什么一个线程只能调用一次。对我来说这听起来很奇怪,有一个Android函数天生只能被调用一次 为什么一个线程只能调用一次 我正在开发一个应用程序,每次我点击屏幕时都要调用一个动画。我认
致命异常
java.lang.IllegalThreadStateException: Thread already started
滚动论坛和问题,我看到一个线程不能启动两次。我见过这样的答案:
“多次启动线程不是一个好主意。”
“一个线程只能调用一次。”
但是没有人说为什么一个线程只能调用一次。对我来说这听起来很奇怪,有一个Android函数天生只能被调用一次
为什么一个线程只能调用一次
我正在开发一个应用程序,每次我点击屏幕时都要调用一个动画。我认为一根线可能是最适合我的工具。我错了吗 更新 也许问题还不清楚 我不是在问为什么线程在活动时不能重新启动 我在问为什么我已经运行但现在已经完成的线程(因此它不是活动的)不能再次调用 这是我完全简化的代码。第一次在
onCreate
调用线程,第二次在onClick
调用线程,因此当我点击图像时。
在第二次调用时,我可以从Android Monitor中看到线程没有激活,尽管它没有启动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
chiamaDatabase();
RESET.start();
ImageView image = (ImageView) findViewById(R.id.imageView2);
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!RESET.isAlive()) {
RESET.start();
}
}
});
}
public Thread RESET = new Thread() {
public void run() {
final ImageView image = (ImageView) findViewById(R.id.imageView2);
Random random = new Random();
int n = random.nextInt(2);
image.setX(320+n);
image.setY(400+n);
}
};
您应该看看线程是什么: 启动已经运行的线程是没有意义的,因此,当有人试图启动已经运行的线程时,语言必须选择要执行的操作:
您还可以参考另一个StackOverflow线程:发布相关代码……”“我认为线程可能是最适合我的工具”——标准Android动画通常不需要线程。“但是没有人说为什么一个线程只能被调用一次”——因为这就是他们在大约20年前实现Java类的方式。问“为什么开发人员X做出决定Y”的问题在堆栈溢出上不起作用。通常,只有开发人员X可以回答这个问题,而开发人员X在这里可能没有帮助。通常,其他人只能提供意见。@rafsanahmad007 done:)谢谢你的回答。抱歉,我的问题不是很清楚:我刚才说的是一个线程,我已经运行了,但现在不再运行了,对于Android来说,它是
RESET.isAlive()=false
。我已经更新了问题,使之更清楚。