我有一个应用程序使用来自web的图像来源。对于我的应用程序,我首先在单独的线程中下载图像,并且仅当我在列表中显示的磁盘上存在图像时。 Downloader是一个单独的线程,但我很新使用线程,现在别的东西让我困惑。除非我刷新视图,否则我的图像不会显示,这是我的列表。现在,我需要证明我的图片,所以我写这在我的自定义视图:问题异步加载图像
private Runnable LoaderTask=new Runnable(){
public void run() {
if(cellIcon!=null){
if(iconCache.get(cellIcon)!=null){
icon.setImageBitmap(iconCache.get(cellIcon));
mHandler.postDelayed(this, 200);
}
}
}
};
private class ImageThread extends Thread{
@Override
public void run() {
// mHandler.removeCallbacks(LoaderTask);
mHandler.postDelayed(LoaderTask, 100);
}
}
我触发我的线程这样
ImageThread thread=new ImageThread();
thread.start();
处理程序在类的开始被实例化。但是当我这样做的时候,没有什么事情发生,直到我刷新我的观点。我尝试(活动).runOnUIThread里面我的一个线程我得到了stackoverflow错误。我该如何解决这个问题,或者是否有其他建议。你可以给我吗?谢谢
嗨佩皮,谢谢您的回答。它帮助了我很多,但仍然没有异步加载图像。我尝试这样'code'私有类LoadImageTask延伸的AsyncTask,无效位图> { \t \t @Override \t \t保护无效onPostExecute(位图结果){ \t \t \t icon.setImageBitmap(结果); \t \t} \t \t @覆盖 \t \t保护的位图doInBackground(HashMap的<字符串,位图> ... PARAMS){ \t \t \t \t回model.getIconCache()得到(cellIcon)。 \t \t \t \t \t} \t \t \t}'code'但我m如果同样的事情。图标缓存正在加载的时间我需要一个任务来定期检查缓存,如果看到一个项目 –
ikbal
定期检查,使用AlarmManager定期运行您的任务 –
嗯,其实我也不知道如何使用AlarmManager,但我会检查它,谢谢 – ikbal