Android 从服务器获取图像到 SQLite 数据库
Android get image from server to SQLite database
Android 从服务器获取图像到 SQLite 数据库
我需要在新闻部分显示图片,当没有互联网连接时我想离线阅读它们。我用标题和 body 文本做到了,但是对于新闻图片来说它太慢了我该如何改进它?
我试图获取字符串 url 并将其存储为字节数组:
public byte[] downloadImage(String urlImg) throws Exception{
URL url = new URL(urlImg);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setReadTimeout(10000);
con.setConnectTimeout(10000);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
Bitmap b = BitmapFactory.decodeStream(con.getInputStream());
b.compress(Bitmap.CompressFormat.WEBP, 0, bos);
} finally {
con.disconnect();
}
return bos.toByteArray();
}
然后我在 doInBackground 中这样调用它:
@Override
protected Boolean doInBackground(String... urls) {
try {
HttpGet httppost = new HttpGet("http://www.77-webdev.com/clients/thebeautyworkshop/news.json");
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(httppost);
int status = response.getStatusLine().getStatusCode();
if (status == 200){
DataSource.deleteAll();
HttpEntity entity = response.getEntity();
String data = EntityUtils.toString(entity);
JSONObject jsonObject = new JSONObject(data);
JSONArray jsonArray = jsonObject.getJSONArray("News");
News news = new News();
for (int i=0; i < jsonArray.length();i++){
JSONObject JObject = jsonArray.getJSONObject(i);
String Title = JObject.getString("title");
String body = JObject.getString("mobile_body");
String Image = JObject.getString("image");
String lang = JObject.getString("lang");
byte[] IMG = downloadImage(Image);
news.setTitle(Title);
news.setMobile_body(body);
news.setImageB(IMG);
news.setLang(lang);
DataSource.create(news);
newsList.add(news);
}
return true;
}
} catch (ParseException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
但这也是因为我正在连接每张图片
如果您知道要将图像放入哪个视图,可以使用Square's Picasso简化图像处理:
Picasso
.with(context)
.load(Image)
.into(imageView);
Android 从服务器获取图像到 SQLite 数据库
我需要在新闻部分显示图片,当没有互联网连接时我想离线阅读它们。我用标题和 body 文本做到了,但是对于新闻图片来说它太慢了我该如何改进它?
我试图获取字符串 url 并将其存储为字节数组:
public byte[] downloadImage(String urlImg) throws Exception{
URL url = new URL(urlImg);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setReadTimeout(10000);
con.setConnectTimeout(10000);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
Bitmap b = BitmapFactory.decodeStream(con.getInputStream());
b.compress(Bitmap.CompressFormat.WEBP, 0, bos);
} finally {
con.disconnect();
}
return bos.toByteArray();
}
然后我在 doInBackground 中这样调用它:
@Override
protected Boolean doInBackground(String... urls) {
try {
HttpGet httppost = new HttpGet("http://www.77-webdev.com/clients/thebeautyworkshop/news.json");
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(httppost);
int status = response.getStatusLine().getStatusCode();
if (status == 200){
DataSource.deleteAll();
HttpEntity entity = response.getEntity();
String data = EntityUtils.toString(entity);
JSONObject jsonObject = new JSONObject(data);
JSONArray jsonArray = jsonObject.getJSONArray("News");
News news = new News();
for (int i=0; i < jsonArray.length();i++){
JSONObject JObject = jsonArray.getJSONObject(i);
String Title = JObject.getString("title");
String body = JObject.getString("mobile_body");
String Image = JObject.getString("image");
String lang = JObject.getString("lang");
byte[] IMG = downloadImage(Image);
news.setTitle(Title);
news.setMobile_body(body);
news.setImageB(IMG);
news.setLang(lang);
DataSource.create(news);
newsList.add(news);
}
return true;
}
} catch (ParseException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
但这也是因为我正在连接每张图片
如果您知道要将图像放入哪个视图,可以使用Square's Picasso简化图像处理:
Picasso
.with(context)
.load(Image)
.into(imageView);