android 萬能回撥介面
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">剛做android開發時經常遇到資料傳遞的問題,因為對Java也不是很熟悉,傳遞資料通過Intent或直接放到一個靜態類中。</span>
後來才知道通過java介面回撥來傳輸資料和做各種監聽,後來看到Event Bus資料傳輸的框架受到了啟發,自己弄了一個
簡單的萬能回撥介面,自己感覺還不錯。自己是個新手,歡迎各種菜鳥、小牛、大牛吐槽和指導!
1、先寫個所以介面回撥的都繼承的BaseHandle
public abstract interface BaseHandle {
}
2、在寫個管理所以介面回撥的類
public class HandlerRegister { private static HashMap<String, ArrayList<BaseHandle>> receiverPond = new HashMap<String, ArrayList<BaseHandle>>(); /** * 註冊新的handle * @param handleName */ public static void addType(String handleName) { try { ArrayList<BaseHandle> itemList = new ArrayList<BaseHandle>(); receiverPond.put(handleName, itemList); } catch (Exception e) { e.printStackTrace(); } } /** * 新增 handle * @param key * @param handle */ public static void setReceiver(String key,BaseHandle handle) { try { if (receiverPond.containsKey(key)) { receiverPond.get(key).add(handle); }else { addType(key); receiverPond.get(key).add(handle); } } catch (Exception e) { e.printStackTrace(); } } /** * 獲取已經存在的handle * @param key * @return */ public static ArrayList<BaseHandle> getReceiver(String key) { return receiverPond.get(key); } /** * 刪除單個handle * @param key * @param handle */ public static void deleteHandle(String key,BaseHandle handle) { try { if (!receiverPond.containsKey(key)) { return; } receiverPond.get(key).remove(handle); } catch (Exception e) { e.printStackTrace(); } } /** * 刪除key下所有handle * @param key */ public static void deleteAllHandle(String key) { try { receiverPond.remove(key); } catch (Exception e) { e.printStackTrace(); } } }
3、根據自己需要的傳遞的資料去建立回撥介面並繼承BaseHandle
public interface BuyServiceHandle extends BaseHandle{
public static final String BUYSERVICE_HANDLE_KEY = "buyservice_handle";
public void buyResult(String uid);
}
4、註冊回撥介面,誰使用誰註冊
BuyServiceHandle mBuyServiceHandle = new BuyServiceHandle() { @Override public void buyResult(final String uid) { updateDoctor(uid); } };
HandleRegister.setReceiver(BuyServiceHandle.BUYSERVICE_HANDLE_KEY, mBuyServiceHandle);
5、傳送資料
private void informUpdateDoctorList(String uid) {
ArrayList<BaseHandle> handleList = HandleRegister.getReceiver(BuyServiceHandle.BUYSERVICE_HANDLE_KEY);
if (handleList == null) {
return;
}
for (BaseHandle temp:handleList) {
((BuyServiceHandle)temp).buyResult(uid);
}
}
相關推薦
android 萬能回撥介面
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">剛做android開發時經常遇到資料傳遞的問題,因為對Java也不是很熟
Android中點選事件回撥介面踩坑心得
有時候寫程式碼的時候有這樣的功能要求,如在ListView或recyclerView中的Item中的控制元件(如Button,TextView)上添加回調介面事件。其實難點就在添加回調介面事件上,怎麼寫介面,介面回撥在哪裡,這才是關鍵。下面是個例子: 介面的寫法:一下是兩介
[Android]RecyclerView基本使用+adapter回撥介面實現點選事件
一、概述 RrcyclerView是ListView的加強版,不僅可以輕鬆實現和ListView同樣的效果,還優化了ListView中存在的各種不同之處。 Android官方推薦我們使用RecyclerView。 二、基本用法 1.首先需要在專案的build.gradle中新增相
Android 抽象回撥函式以及介面回撥更新UI
回撥函式使用,使得程式碼變得部分跟不變部分更加明顯,程式碼整體上有一個質的提升。 我是用抽象類裡寫的抽象回撥函式,通過通知註冊介面形式,可以隨時傳遞資料,接受資料。 同時我用介面函式回撥更新UI。下面
android中的回撥-介面回撥
發現很多初學者對於回撥,介面,抽象 等概念理解的不是很透徹。 今天就以我的經驗把 介面回撥給大家闡述一下。適合初學者看看。 先簡單說說我的理解吧, 所謂的介面回撥。 你先將介面定義好,然後在特定的條件下條用它。 可能很多初學者開始的時候很疑惑,其實這也東西你天天都在
android回撥介面筆記
上圖: 佈局檔案: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/too
Android中Service與Activity的通訊---回撥介面方式
最近在技術交流群中有人問到:要實現service與activity的高強度通訊用什麼方法? 群友回答的是用handler,但面試官好像不太滿意,後來本人查找了下資料,得到個人的結論:service與activity之前的通訊方式有很多,回撥介面方式、觀察者模式、廣播、還有h
android 回撥介面學習(自定義Dialog 獲取資料資料回撥)
功能: 將單獨的一個Dialog提取出來以複用程式碼,然後在activity中去new 一個Dialog出來,能夠獲取Dialog選取的資料; 具體實現 TopicSingleChoiceDialog.java private int topicID=
C#POST 支付寶/微信回撥介面
一般支付寶/微信的回撥介面都會返回xml格式,下面是呼叫類似這種介面的辦法: public async Task<string> GetData() { string requestUrl = "http://localhost:xxx/xx/xxxx/xxx/xxxx
淺析微信支付:申請退款、退款回撥介面、查詢退款
本文是【淺析微信支付】系列文章的第八篇,主要講解商戶如何處理微信申請退款、退款回撥、查詢退款介面,其中有一些坑的地方,會著重強調。 淺析微信支付系列已經更新七篇了喲~,沒有看過的朋友們可以看一下哦。 淺析微信支付:查詢訂單和關閉訂單 淺析微信支付:支付結果通知 淺析微信支付:統一下單介面
Android 頁面回撥跳轉(startActivityForResult)
轉載自: https://blog.csdn.net/oZhuiMeng123/article/details/80721284 1.頁面回撥原理 原理很簡單: 由ActivityA通過startActivityForResult方法進行跳轉到ActivityB,在Activi
Android camera2 回撥imagereader 從Image拿到YUV資料轉化成RGB,生成bitmap並儲存
ImageUtil.java import android.graphics.ImageFormat; import android.media.Image; import android.os.Build; import android.support.annotation.RequiresApi;
Android如何回撥編碼後的音視訊資料
有開發者提到,在推送RTMP推送端的基礎上,希望能回撥編碼後的音視訊資料,便於開發者對接第三方系統,如GB28181. 為此,我們加了一下介面: 1. 設定音視訊callback 對應介面: /** * Set Audio Encoded Data Callba
第三方支付平臺支付介面及回撥介面開發
作為開放式的B/S架構程式,無論所屬電商,金融,機械製造,企業OA,ERP,CRM,CMS等等行業或系統中,第三方支付以及銀聯支付的業務一定是客戶關心所在,也是保證客戶系統盈利運營的一個重要保障。通常這種B2C或者C2C系統的開發,商戶使用者所關注的支付平臺大多離不開“阿里支付寶,快錢,騰訊財付通,易寶支
解決:接入微信支付,調不起回撥介面WXPayEntryActivity
最近開發公司SDK需要接入微信支付功能,於是上了微信開發者平臺,下載微信的SDK,按著文件接入。當我進行微信支付,需要調起微信客戶端,但是卻沒有。而微信回撥WXPayEntryActivity也沒有被回撥起來。這就很奇怪了,看回文件,說要把WXPayEntryActivity
一個自定義dialog提供確定和取消按鈕的回撥介面
public class MessageDialog { Context context; AlertDialog dialog; AlertDialog.Builder bu
詳解Android中回撥機制與RecyclerView的Item點選事件實現
總是看書上寫著回調回調,以為就是函式呼叫換了個名字,尤其是看了Button的點選事件實現後,覺得不就是觸發機制。 A事件發生->後臺處理邏輯->告訴前臺怎麼做->結束。 Android常見button點選事件: loginB
基於Fragment回撥介面委託工作任務給託管Activity
要委託工作任務給託管activity,通常的做法是由fragment定義名為Callbacks的回撥介面。 回撥介面定義fragment委託給Activity處理的工作任務。 任何打算託管fragment的Activity都必須實現它。 有了回撥介面,就不
android利用回撥函式在對話方塊中傳遞資料
android開發中,往往需要在當前activity中開啟一個輸入框來獲取使用者資料,但是怎麼將輸入框的資料傳遞到activity中呢? 一種方法是建立一個全域性變數,在對話方塊中將資料傳遞給靜態全域性變數,然後在當前activity中使用它。這種方式繁瑣而且
Spring生命週期不可不知的回撥介面
上回說到 Spring bean生命週期中的InitializingBean介面,我們瞭解到這只是spring bean生命週期中修改bean的諸多方式之一,其實在整個生命週期中,修改bean的方式大致有如下幾種: 實現 InitializingBean介面 的 afterPropertiesSet