91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中AIDL如何使用

發布時間:2021-06-28 15:42:42 來源:億速云 閱讀:123 作者:Leah 欄目:移動開發

這期內容當中小編將會給大家帶來有關Android中AIDL如何使用,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

1.在項目包下新建一個IInfo.aidl,并在其中添加你要調用的方法,格式和java中接口一樣。package com.android.server;

interface IInfo {      boolean start();     void stop();     void locate(int x, int y);     void move(int dx, int dy);     void getLocation(inout int[] p);//參數為數組的話,可以加上inout,不然會報錯     void setTimeout(int t);     int getTimeout();     void setBitmap(inout byte[] bmp, int width, int height);}

正確寫好之后,eclipse的adt會自動在gen目錄下生成一個IInfo.java文件

2.新建一個CursorService.java類,繼承IInfo.stub,如下:

package com.android.server; public class CursorService extends ICursorInfo.Stub{     final boolean hasService;     public CursorService() {         hasService = initializeJNI();     }     public synchronized boolean start() {         if (hasService)             return start0();         return false;     }     public synchronized void stop() {         if (hasService)             stop0();     }     public synchronized void locate(int x, int y) {         if (hasService)             locate0(x, y);     }       public synchronized void move(int dx, int dy) {        if (hasService)            move0(dx, dy);     }       public synchronized void getLocation(int[] p) {         if (p == null)             throw new NullPointerException("p is null");         if (p.length < 2)             throw new IllegalArgumentException("p.len must >= 2");         if (hasService)             getPosition0(p);     }     public synchronized void setTimeout(int t) {         if (hasService)             setTimeout0(t);     }       public synchronized int getTimeout() {         if (hasService)             return getTimeout0();         return -1;     }       public void setBitmap(byte[] bmp, int width, int height) {         if(bmp == null)             throw new NullPointerException("bmp is null");         if(width < 0 || height < 0)            throw new IllegalArgumentException("width < 0 || height < 0");        if(width * height > bmp.length)             throw new IndexOutOfBoundsException("bmp less than width*height");         setBitmap0(bmp,width,height);     }

在其中實現你aAIDL中的方法

3. 新建一個Manager類,在其中構造一個內部服務連接類,實現ServiceConnection接口:

public class Manager {     private static final String TAG = "Manager";     private IInfo   iCurSer;     private Manager(){     }           public Manager(Context ctx){         this.context = ctx;         new Manager();     }              /**這里就可以與service正常通信,調用service中的方法**/     public void startService(){         Intent intent=new Intent("com.android.server.CursorService");         context.bindService(intent,new CursorServiceConnection(),                 Service.BIND_AUTO_CREATE);     }     /**      * 實現ServiceConnection接口      * */     public final class CursorServiceConnection implements ServiceConnection{        // 和CursorService綁定時系統回調這個方法         @Override         public void onServiceConnected(ComponentName name, IBinder service) {            // 此處不能使用強制轉換, 應該調用Stub類的靜態方法獲得CursorService接口的實例對象            iCurSer=ICursorInfo.Stub.asInterface(service);         }           //解除和CursorService的綁定時系統回調這個方法         @Override         public void onServiceDisconnected(ComponentName name) {             iCurSer=null;         }     } }

上述就是小編為大家分享的Android中AIDL如何使用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

中江县| 巧家县| 囊谦县| 新乡县| 栖霞市| 丹阳市| 合水县| 滕州市| 乌兰县| 五河县| 菏泽市| 甘孜| 海盐县| 大厂| 甘南县| 双峰县| 富蕴县| 永济市| 招远市| 浮梁县| 济宁市| 时尚| 吉木乃县| 永城市| 岱山县| 凌源市| 尚义县| 长海县| 黔东| 册亨县| 西吉县| 志丹县| 醴陵市| 公主岭市| 威宁| 桂平市| 沙雅县| 潜山县| 连南| 孝昌县| 毕节市|