標籤:
// activity 之間方法調用的橋樑
public class ActivityCallBridge {
static ActivityCallBridge mBridge;
private OnMethodCallback mCallback;
private ActivityCallBridge() {
}
public static ActivityCallBridge getInstance() {
if (mBridge == null) {
mBridge = new ActivityCallBridge();
}
return mBridge;
}
public void invokeMethod() {
if (mCallback != null) {
mCallback.doMethod();
}
}
public void setOnMethodCallback(OnMethodCallback callback) {
mCallback = callback;
}
public static interface OnMethodCallback {
public void doMethod();
}
}
如果你要 B 去調用 A 的一個方法, 你可以讓 A 實現 OnMethodCallback 介面,然後在 B 裡面調用 invokeMethod 方法來完成回調:
// A 實現調用介面
public class AActivity extends Activity implements ActivityCallBridge.OnMethodCallback {
private ActivityCallBridge mBridge;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mBridge = ActivityCallBridge.getInstance();
mBridge.setOnMethodCallback(this);
}
@Override
public void doMethod() {
}
}
//B 調用介面
public class BActivity extends Activity {
private ActivityCallBridge mBridge;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mBridge = ActivityCallBridge.getInstance();
mBridge.invokeMethod();
}
}
方式一結束
——————————————————————————————————————————————————————————————————————————————————————————
回調方式二:
複製內容到剪貼簿代碼:
package pattern;
/**
*
* @author xuzhiwei
*/
public interface ICallBack {
public void onSuccess(String content);
public void onFailure(String errorMsg);
}
複製內容到剪貼簿代碼:
package pattern;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author xuzhiwei
*/
public abstract class Request {
public void onSuccess(String resposeBody){}
public void onFailure(String exceptionMsg){}
public Request(){}
public void execute(String path){
try {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setConnectTimeout(3*1000);
conn.setReadTimeout(2000);
int responseCode = conn.getResponseCode();
onResponse(responseCode);
} catch (MalformedURLException ex) {
onFailure(ex.getMessage());
} catch (IOException ex) {
onFailure(ex.getMessage());
}
}
public void onResponse(int code){
if(code == 200){
onSuccess("發送請求成功!");
}else{
onFailure("發送請求失敗!請求代碼:"+code);
}
}
}
複製內容到剪貼簿代碼:
package pattern;
/**
*
* @author xuzhiwei
*/
public class Ranking {
private String path;
public Ranking(String path){
this.path = path;
}
public void list(final ICallBack call) {
Request request = new Request() {
@Override
public void onSuccess(String resposeBody) {
if (null != call) {
call.onSuccess(resposeBody);
} else {
onFailure("未初始化回呼函數");
}
}
@Override
public void onFailure(String exceptionMsg) {
if (null != call) {
call.onFailure(exceptionMsg);
}
}
};
request.execute(path);
}
}
複製內容到剪貼簿代碼:
package pattern;
/**
*
* @author xuzhiwei
*/
public class TestCallBack {
public static void main(String[] args) {
Ranking ranking = new Ranking("http://localhost/net/index.php");
ranking.list(new ICallBack() {
@Override
public void onSuccess(String content) {
complete(content);
}
@Override
public void onFailure(String errorMsg) {
complete(errorMsg);
}
});
}
private static void complete(String msg)
{
System.out.println("------請求完成---->"+msg);
}
}
android 回呼函數的使用