我的android应用程序的一部分从web服务器(php)在ImageView上显示图像。服务器上图像的名称具有相同的IMEI电话号码,这样手机就可以识别哪个图像属于它
示例Imei为33245576544535,则图像为www.example.uploads/33245576544535.jpg
问题是,当图像发生变化但名称仍然不变时,手机会不断获得旧的兑现图像副本。
如何始终从我的服务器而不是从现金服务器获取图像。这是操作代码提前感谢
package com.sunil.upload;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class see extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.look);
String phoneNo;
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
phoneNo=telephonyManager.getDeviceId()+"";
new DownloadImageTask((ImageView) findViewById(R.id.imageView1))
.execute("http://example.com/uploads/"+phoneNo+".jpg");
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
}
在url中添加一个唯一的参数会使缓存总是丢失:
urldisplay = urldisplay + “?timestamp=“ + System.currentTimeMillis();
InputStream in = new java.net.URL(urldisplay).openStream();
但是可以考虑使用IMEI以外的其他标识符。收集IMEI对用户隐私不利,如果多个用户在同一设备上使用您的应用程序,则很可能无法工作。
如果无法添加参数,您可以尝试在请求中添加"缓存控制:无缓存"answers"Pragma:无缓存"标题:
URL url = new URL(urldisplay);
URLConnection urlConnection = url.openConnection();
urlConnection.setRequestProperty("Cache-Control", "no-cache");
urlConnection.setRequestProperty(“Pragma”, "no-cache");
InputStream in = new BufferedInputStream(urlConnection.getInputStream());