我正在创建一个应用程序,用户可以通过单击特定按钮开始幻灯片显示(自动播放)图像。我已经开始了一个线程,在1秒后,新的图像被设置到我的imageView。问题是我的应用程序停止响应并在几秒钟后崩溃。
请检查我的代码并帮助我解决此问题。 (变量被正确初始化)
playThread = new Runnable() {
@Override
public void run() {
synchronized (this) {
for (int i=pos;i<mImageIds.length;i++){
//pos++;
selectedImage.setImageResource(mImageIds[i]);
try {
wait(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
}};
play.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
runOnUiThread(playThread);
}
});
}
应用冻结时,我的logcat!
答案 0 :(得分:1)
runOnUiThread()方法用于更新用户界面。任何其他逻辑不应该发生在那里。所以我建议这样的事情:
Thread t = new Thread() {
for (int i=pos;i<mImageIds.length;i++){
runOnUiThread(new Runnable() {
@Override
public void run() {
selectedImage.setImageResource(mImageIds[i]);
}};);
try {
wait(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}};
play.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
t.start();
}
});
请注意,我没有测试此代码。