[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
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!
- 来自作者
- 相关推荐