У меня 400 изображений в моей базе данных сервера. Я могу получить эти изображения и отобразить в своем эмуляторе. Но для получения изображения с сервера требуется много времени. Поэтому я хочу получить изображение асинхронно. Как я могу достичь этой задачи? Помогите мне в этом... Будем благодарны заранее.
Я хочу преобразовать следующий код в асинхронную задачу....
Мой код:
public View getView(.......)
{
ImageView myimgview = (ImageView) view.findViewById(R.id.imageView100);
drawable = LoadImageFromWebOperations(v.getTag().toString());
myimgview.setImageDrawable(drawable);
---
---
---
}
private Drawable LoadImageFromWebOperations(String url) {
try {
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "image.png");
return d;
}
catch (Exception e)
{
System.out.println("Exc=" + e);
return null;
}
}
Вы можете использовать поток в сочетании с обработчиком:
public void setImageInThread(final ImageView imageView, final String url) {
final Handler handler = new Handler() {
@Override
public void handleMessage(Message message) {
Drawable result = (Drawable) message.obj;
imageView.setImageDrawable(result);
}
};
new Thread() {
@Override
public void run() {
Drawable drawable = getDrawable(url);
Message message = handler.obtainMessage(1, drawable);
handler.sendMessage(message);
}
}.start();
}
Где getDrawable - ваша функция для синхронного изображения.
Простое решение - использование асинхронной задачи в java
услышать пример
private class DownloadImages AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
//use your async task hear
//in your case call LoadImageFromWebOperations(urls[0])
}
@Override
protected void onPostExecute(String result) {
}
}
И назовите эту асинхронную задачу, передав запрошенный URL-адрес изображения
DownloadImages task = new DownloadImages ();
task.execute(new String[] { "http://your image url.com" });
Слушайте, это хороший учебник для этого
http://www.vogella.com/articles/AndroidPerformance/article.html#asynctask
Я использую Prime для загрузки всего изображения, это легко позаботится об этом.