成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何實現Android接口問題

移動開發 Android
在Android操作系統中, 每個應用程序都可以有自己的進程, 在寫UI應用的時候, 經常要用到Service,下面講述下如何實現AndRoid接口問題。

 在不同的進程中, 如何實現傳遞對象呢?  顯然, Java中不允許跨進程內存共享, 因此傳遞對象, 只能把對象拆分成操作系統能理解的簡單形式,有關Android接口的問題下文進行詳細說明。

以達到跨界對象訪問的目的. 在J2EE中,采用RMI的方式, 可以通過序列化傳遞對象. 在Android中, 則采用AIDL的方式. 理論上AIDL可以傳遞Bundle,實際上做起來卻比較麻煩.AIDL(AndRoid接口描述語言)是一種接口描述語言;

編譯器可以通過aidl文件生成一段代碼,通過預先定義的接口達到兩個進程內部通信進程的目的. 如果需要在一個Activity中, 訪問另一個Service中的某個對象, 需要先將對象轉化成AIDL可識別的參數(可能是多個參數), 然后使用AIDL來傳遞這些參數, 在消息的接收端, 使用這些參數組裝成自己需要的對象.

AndRoid接口的IPC的機制和COM或CORBA類似, 是基于接口的,但它是輕量級的。它使用代理類在客戶端和實現層間傳遞值. 如果要使用AIDL, 需要完成2件事情: 1. 引入AIDL的相關類.; 2. 調用aidl產生的class.

具體實現步驟如下:

1、創建AIDL文件, 在這個文件里面定義接口, 該接口定義了可供客戶端訪問的方法和屬性。 如: ITaskBinder.adil

注意: 理論上, 參數可以傳遞基本數據類型和String, 還有就是Bundle的派生類, 不過在Eclipse中,目前的ADT不支持Bundle做為參數, 據說用Ant編譯可以, 我沒做嘗試.

2、編譯AIDL文件, 用Ant的話, 可能需要手動, 使用Eclipse plugin的話,可以根據adil文件自動生產java文件并編譯, 不需要人為介入.

3、在Java文件中, 實現AIDL中定義的接口. 編譯器會根據AIDL接口, 產生一個JAVA接口。這個接口有一個名為Stub的內部抽象類。它繼承擴展了接口并實現了遠程調用需要的幾個方法。接下來就需要自己去實現自定義的幾個接口了。

  1. package com.cmcc.demo;  
  2.  
  3.    
  4.  
  5. import com.cmcc.demo.ITaskCallback;  
  6.  
  7.    
  8.  
  9. interface ITaskBinder {  
  10.  
  11.       
  12.  
  13.     boolean isTaskRunning();  
  14.  
  15.           
  16.  
  17.     void stopRunningTask();      
  18.  
  19.       
  20.  
  21.     void registerCallback(ITaskCallback cb);      
  22.  
  23.      
  24.  
  25.     void unregisterCallback(ITaskCallback cb);  
  26.  
  27. }  
  28.  
  29. 其中: ITaskCallback在文件ITaskCallback.aidl中定義:  
  30.  
  31. package com.cmcc.demo;  
  32.  
  33.    
  34.  
  35. interface ITaskCallback {  
  36.  
  37.     void actionPerformed(int actionId);  
  38.  
  39. }  
  40.  
  41. 注意: 理論上, 參數可以傳遞基本數據類型和String, 還有就是Bundle的派生類, 不過在Eclipse中,目前的ADT不支持Bundle做為參數, 據說用Ant編譯可以, 我沒做嘗試.  
  42.  
  43. 2、編譯AIDL文件, 用Ant的話, 可能需要手動, 使用Eclipse plugin的話,可以根據adil文件自動生產java文件并編譯, 不需要人為介入.   
  44.  
  45. 3、在Java文件中, 實現AIDL中定義的接口. 編譯器會根據AIDL接口, 產生一個JAVA接口。這個接口有一個名為Stub的內部抽象類,它繼承擴展了接口并實現了遠程調用需要的幾個方法。接下來就需要自己去實現自定義的幾個接口了.  
  46.  
  47. ITaskBinder.aidl中接口的實現, 在MyService.java中接口以內嵌類的方式實現:  
  48.  
  49. private final ITaskBinder.Stub mBinder = new ITaskBinder.Stub() {  
  50.  
  51.         public void stopRunningTask() {  
  52.  
  53.             //@TODO  
  54.  
  55.         }  
  56.  
  57.           
  58.  
  59.         public boolean isTaskRunning() {  
  60.  
  61.             //@TODO  
  62.  
  63.             return false;  
  64.  
  65.         }   
  66.  
  67.           
  68.  
  69.         public void registerCallback(ITaskCallback cb) {  
  70.  
  71.             if (cb != null) mCallbacks.register(cb);  
  72.  
  73.         }  
  74.  
  75.         public void unregisterCallback(ITaskCallback cb) {  
  76.  
  77.             if (cb != null) mCallbacks.unregister(cb);  
  78.  
  79.         }  
  80.  
  81. };  
  82.  
  83. 在MyActivity.java中ITaskCallback.aidl接口實現:  
  84.  
  85. private ITaskCallback mCallback = new ITaskCallback.Stub() {  
  86.  
  87.         public void actionPerformed(int id) {  
  88.  
  89.            //TODO  
  90.  
  91.             printf("callback id=" + id);  
  92.  
  93.         }  
  94.  
  95. }; 

4、向客戶端提供AndRoid接口ITaskBinder, 如果寫的是service,擴展該Service并重載onBind ()方法來返回一個實現上述接口的類的實例。這個地方返回的mBinder,就是上面通過內嵌了定義的那個. (MyService.java)

【編輯推薦】

  1. 新一代的Android手機介紹 深度剖析Android SDK版本介紹
  2.  
  3. 谷歌Android手機能否站穩中國
  4. PythonAndroid深度剖析Android應用程序的四種構造塊
  5. 探秘與眾不同的Android系統?
責任編輯:chenqingxiang 來源: IT168
相關推薦

2010-03-04 09:46:51

Android Bin

2010-02-06 18:04:21

Android 接口

2024-06-06 08:46:37

2025-03-03 00:00:15

2020-12-08 08:08:51

Java接口數據

2017-10-23 10:13:18

IO底層虛擬

2023-04-26 08:20:54

2024-03-21 08:50:33

HTMLURL預覽應用軟件

2010-03-16 17:00:02

Java多線程支持

2015-05-28 11:24:27

Socket調用套接口問題

2024-12-18 12:10:00

2024-03-27 08:28:31

元素拖拽API文件上傳

2014-04-01 11:17:16

2022-06-04 12:25:10

解密加密過濾器

2021-03-09 13:18:53

加密解密參數

2024-02-01 09:10:04

頁面引導工具Vue3

2009-07-10 14:26:28

實現SwingActionListe

2022-06-22 09:41:16

接口異常測試

2011-08-29 09:49:35

LuaAndroid游戲

2014-05-30 09:44:08

Android折紙動畫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲午夜精品一区二区三区他趣 | 亚洲午夜在线 | 日韩在线 | 国产91精品在线 | 精品欧美一区二区三区久久久 | 中文字幕乱码视频32 | 欧美性乱| 国产成人精品亚洲日本在线观看 | 久久天堂网 | 一区二区电影 | 91在线免费视频 | 午夜久久av| 亚洲国产一区在线 | 久久爱一区 | 一区二区三区精品视频 | 欧美自拍第一页 | 精品无码久久久久国产 | 日韩在线精品视频 | 久久99精品久久久久久国产越南 | 夜夜骑av| 中文字幕观看 | 久久精品视频91 | 国产精品美女久久久 | 久草视频在 | 中文字幕一区二区三区乱码在线 | 精品国产欧美一区二区三区成人 | 国产一区二区在线免费 | 成年人在线观看 | 大陆一级毛片免费视频观看 | 日韩毛片在线观看 | 日韩精品专区在线影院重磅 | 手机看黄av免费网址 | 狠狠的操| 91久久久久久久久 | 亚洲精品成人 | 黄色一级特级片 | 国产精品国色综合久久 | www.日本三级 | 日日日干干干 | 欧美区在线 | 99婷婷 |