接口回调总结

397 阅读1分钟

总结:接口的具体实现,接收传过来的参数,再调自己的方法。

理解接口,如电子产品与鼠标,键盘等的关系,

你是工具类找你帮忙,只要他实现Callback,就有onResult()方法,你处理后用callback调它的onResult()方法

理解接口,如电子产品与鼠标,键盘等的关系,

你是工具类找你帮忙,只要他实现Callback,就有onResult()方法,你处理后用callback调它的onResult()方法

image

只需要把extends FileIOClient 改为implements IFileIOCallBack即可。

image

后来,帝国将这种利用接口去实现回调机制的方式称之为接口回调。

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);
					}
				});
	}