我的android应用程序中有一个循环,它从在线数据库中下载图像,即firebase数据库。我在Datasnapshot对象中获取此数据,该对象进一步用于循环以从firebase存储加载图像。循环运行得太快,我只能看到最后一张图像。我希望在单击按钮时将每个新图像加载到图像查看器中。我怎样才能做到这一点。在循环中使用循环使我的程序进入挂起状态。
答案 0 :(得分:0)
可能是你可以在生产者和消费者中实现它。例如。
Object lock = new Object();
Button button = new Button(context);
button.setOnClickListener(view -> {
synchronized (lock) {
lock.notify();
}
});
for (; ; ) {
synchronized (lock){
try {
lock.wait();
//do your work here
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
答案 1 :(得分:0)
我建议你使用像Ion这样的库。它使异步加载ImagViews变得非常容易。
这是github的链接。
要在单击按钮时执行操作,您可以从设置为按钮的onClickListener()内请求下载。
Button button = (Button) findViewById(R.id.yourbutton);
button.setOnClickListener(new ViewOnClickListener(){
@Override
public void onClick(View v){
<here you fire your download>
}
});
答案 2 :(得分:-1)
您可以使用大小为1的信号量并在循环中获取锁定并释放按钮单击时的锁定。当然,您的图像加载必须在后台线程中。