总结:接口的具体实现,接收传过来的参数,再调自己的方法。
理解接口,如电子产品与鼠标,键盘等的关系,
你是工具类找你帮忙,只要他实现Callback,就有onResult()方法,你处理后用callback调它的onResult()方法
理解接口,如电子产品与鼠标,键盘等的关系,
你是工具类找你帮忙,只要他实现Callback,就有onResult()方法,你处理后用callback调它的onResult()方法
只需要把extends FileIOClient 改为implements IFileIOCallBack即可。
后来,帝国将这种利用接口去实现回调机制的方式称之为接口回调。
android demo参考:
/**
* Bitmap回调接口
*
*/
public interface BitmapCallback {
public void getDownloadBitmap(Bitmap bitmap);
}
复制代码
/**
* 图片下载类
*
*/
public class ImageDownload {
// 传递进接口参数,这样其他类引用的时候就能调用,这个方法在运行的时候又会回调MainActivity的方法
public Bitmap getBitmap(final String path, final BitmapCallback callback) {
final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
Bitmap bitmap = (Bitmap) msg.obj;
callback.getDownloadBitmap(bitmap);
}
};
// 图片下载进程
new Thread() {
public void run() {
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpPost = new HttpGet(path);
HttpResponse response = null;
try {
response = httpClient.execute(httpPost);
if (response.getStatusLine().getStatusCode() == 200) {
byte[] datas = EntityUtils.toByteArray(response
.getEntity());
Bitmap bitmap = BitmapFactory.decodeByteArray(datas, 0,
datas.length);
Message message = Message.obtain();
message.obj = bitmap;
handler.sendMessage(message);
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
return null;
}
}
复制代码
public class MainActivity extends Activity {
ImageView image = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = (ImageView) findViewById(R.id.image);
// 实例化ImageDownload类,并且传递参数调用getBitmap方法
new ImageDownload().getBitmap(
"http://2t.5068.com/uploads/allimg/150407/1-15040G45F6.jpg",
new BitmapCallback() {
@Override
public void getDownloadBitmap(Bitmap bitmap) {
// TODO Auto-generated method stub
image.setImageBitmap(bitmap);
}
});
}
复制代码