我正在创建一个应用程序,用户可以在其中单击特定按钮来开始幻灯片播放(自动播放)图像。我启动了一个线程,其中在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);
}
});
}
应用冻结时我的日志猫!
最佳答案
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();
}
});
请注意,我没有测试此代码。