[Android] Callback 教學及實作
IPFS
Callback 是很常見的回調功能
當資料有需要更新的時候,
通知Application進行更新
雖然也可以在Application層開Thread進行Monitor動作,
但是筆者認為這樣會增加Debug的困難度。
在開發上盡量減少Application複雜度,
不然常常跑出奇怪的bug(攤手)
廢話不多說
馬上來進行Callback實作吧
首先創建interface Callfun (名稱可自行定義,例如Callbackfun之類)
public interface Callfun {
public void onSuccess();
public void onError();
}
然後創建onSuccess()和onError()的function
這是用來傳遞和接收Callback的Function
Callback函式就定義完成囉!
接下來在要接收Callback的地方implements Callfun
public class CallbackActivity extends AppCompatActivity implements Callfun{
......
@SuppressLint("WrongConstant")
@Override
public void onSuccess() {
Log.d(TAG, "CallbackApi Receive onSuccess: ");
Toast.makeText(this, "onSuccess", duration).show();
}
@SuppressLint("WrongConstant")
@Override
public void onError() {
Log.d(TAG, "CallbackApi Receive onError: ");
Toast.makeText(this, "onError", duration).show();
}
}
implements Callfun之後,按下Alt+Enter
會自動出現上方的onSuccess()和onError()的function
當Callback回傳onSuccess或onError時
就會在這裡接收到訊息
接收Callback的地方也完成囉~
最後一步就是調用Callfun來測試Callback是否正確
新增CallbackApi類別來調用Callfun做onSuccess()和onError()的回傳
public class CallbackApi {
private static final String TAG = "CallbackApi";
public Callfun mCallback;
public Context mContext;
public CallbackApi(Context context){
this.mContext = context;
mCallback = (Callfun) mContext;
}
public void onApiSuccess()
{
mCallback.onSuccess();
}
public void onApiError()
{
mCallback.onError();
}
}
完成後只要再設定Callback觸發的情況
回到CallbackActivity中
在setOnClickListener()中觸發CallbackApi進行回調mCallback.onSuccess()
和mCallback.onError()
//////////////////////////////////////////////////////////////////////
TextView success = (TextView) findViewById(R.id.resultPass);
success.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onClick: CallbackApi send success");
mCallbackApi.onApiSuccess();
}
});
TextView error = (TextView) findViewById(R.id.resultError);
error.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onClick: CallbackApi send error");
mCallbackApi.onApiError();
}
});
//////////////////////////////////////////////////////////////////////
CallbackActivity 就會收到 onSuccess 或是 onError 的Toast Message
Toast.makeText(this, "onSuccess", duration).show(); Toast.makeText(this, "onError", duration).show();
GitHub:
https://github.com/Ailefrom/EasyCallback
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!

- 来自作者
- 相关推荐