我正在创建一个应用程序,用户可以在其中单击特定按钮来开始幻灯片播放(自动播放)图像。我启动了一个线程,其中在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();
    }
});


请注意,我没有测试此代码。

07-27 14:07
查看更多