我有一个非常简单的程序。在activity_main.xml
我只有以下ImageView
。
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="play"
android:scaleType="matrix"
android:scaleX="2"
android:scaleY="2"
app:srcCompat="@drawable/ic_play" />
点击图像,它应该开始以下活动。
public void play(View view) {
Log.i("Luigi","ciao");
WORD.start();
}
public Thread WORD = new Thread() {
public void run() {
}
};
正如您所看到的,活动完全是空的,所以它不应该给出任何问题。如果我第一次点击图像,它就有效。问题是,在我第二次点击图像时,程序崩溃了。
有没有人有这个理由?我无法解释这种行为,也因为我将活动完全留空了。
解决
我用以下方式解决了AsyncTask。
public void play(View view) {
Log.i("Luigi","ciao");
new WORD().execute();
}
private class WORD extends AsyncTask<Void, Integer, String>
{
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(Void... arg0)
{
return "Work executed!";
}
@Override
protected void onProgressUpdate(Integer... values)
{
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String result)
{
super.onPostExecute(result);
Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
}
}
答案 0 :(得分:0)
查看Thread API,特别是start()
函数:
http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#start()
在已经运行的线程上调用start()
将引发异常,这就是您的情况。
反正有线程有什么意义?如果您告诉我们您想要实现的目标,我们可能会帮助您。
另外,看看Android Studio中的logcat,它将帮助您找到崩溃的原因。