日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何實現(xiàn)Android接口問題

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

創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的青浦網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!

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

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

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

具體實現(xiàn)步驟如下:

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

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

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

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

 
 
 
  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. 注意: 理論上, 參數(shù)可以傳遞基本數(shù)據(jù)類型和String, 還有就是Bundle的派生類, 不過在Eclipse中,目前的ADT不支持Bundle做為參數(shù), 據(jù)說用Ant編譯可以, 我沒做嘗試.  
  42.  
  43. 2、編譯AIDL文件, 用Ant的話, 可能需要手動, 使用Eclipse plugin的話,可以根據(jù)adil文件自動生產(chǎn)java文件并編譯, 不需要人為介入.   
  44.  
  45. 3、在Java文件中, 實現(xiàn)AIDL中定義的接口. 編譯器會根據(jù)AIDL接口, 產(chǎn)生一個JAVA接口。這個接口有一個名為Stub的內(nèi)部抽象類,它繼承擴展了接口并實現(xiàn)了遠程調(diào)用需要的幾個方法。接下來就需要自己去實現(xiàn)自定義的幾個接口了.  
  46.  
  47. ITaskBinder.aidl中接口的實現(xiàn), 在MyService.java中接口以內(nèi)嵌類的方式實現(xiàn):  
  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接口實現(xiàn):  
  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 ()方法來返回一個實現(xiàn)上述接口的類的實例。這個地方返回的mBinder,就是上面通過內(nèi)嵌了定義的那個. (MyService.java)

【編輯推薦】

  1. 新一代的Android手機介紹 深度剖析Android SDK版本介紹
  2.  
  3. 谷歌Android手機能否站穩(wěn)中國
  4. PythonAndroid深度剖析Android應用程序的四種構(gòu)造塊
  5. 探秘與眾不同的Android系統(tǒng)?

名稱欄目:如何實現(xiàn)Android接口問題
鏈接分享:http://www.dlmjj.cn/article/djjhsij.html