<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小菜毛毛技術(shù)分享

    與大家共同成長

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      164 Posts :: 141 Stories :: 94 Comments :: 0 Trackbacks

    建立AIDL服務(wù)的步驟(3)

    (4)編寫一個MyService類,代碼如下:

    1. package net.blogjava.mobile.complex.type.aidl;  
    2.  
    3. import java.util.HashMap;  
    4. import java.util.Map;  
    5. import android.app.Service;  
    6. import android.content.Intent;  
    7. import android.os.IBinder;  
    8. import android.os.RemoteException;  
    9. //  AIDL服務(wù)類  
    10. public class MyService extends Service  
    11. {   
    12.     public class MyServiceImpl extends IMyService.Stub  
    13.     {  
    14.         @Override  
    15.         public Product getProduct() throws RemoteException  
    16.         {  
    17.             Product product = new Product();  
    18.             product.setId(1234);  
    19.             product.setName("汽車");  
    20.             product.setPrice(31000);   
    21.             return product;  
    22.         }  
    23.         @Override  
    24.         public Map getMap(String country, Product
      product) throws RemoteException  
    25.         {  
    26.             Map map = new HashMap<String, String>();  
    27.             map.put("country", country);  
    28.             map.put("id", product.getId());  
    29.             map.put("name", product.getName());  
    30.             map.put("price", product.getPrice());  
    31.             map.put("product", product);  
    32.             return map;  
    33.         }  
    34.     }  
    35.     @Override  
    36.     public IBinder onBind(Intent intent)  
    37.     {          
    38.         return new MyServiceImpl();  
    39.     }  

    (5)在AndroidManifest.xml文件中配置MyService類,代碼如下:

    1. <service android:name=".MyService" > 
    2.     <intent-filter>   
    3.         <action android:name="net.blogjava.
      mobile.complex.type.aidl.IMyService"
       /> 
    4.     </intent-filter> 
    5. </service> 

    在客戶端調(diào)用AIDL服務(wù)的方法與實例52介紹的方法相同,首先將IMyService.java和Product.java文件復(fù)制到客戶端工程(ch08_complextypeaidlclient),然后綁定AIDL服務(wù),并獲得AIDL服務(wù)對象,最后調(diào)用AIDL服務(wù)中的方法。完整的客戶端代碼如下:

    1. package net.blogjava.mobile;  
    2.  
    3. import net.blogjava.mobile.complex.type.aidl.IMyService;  
    4. import android.app.Activity;  
    5. import android.content.ComponentName;  
    6. import android.content.Context;  
    7. import android.content.Intent;  
    8. import android.content.ServiceConnection;  
    9. import android.os.Bundle;  
    10. import android.os.IBinder;  
    11. import android.view.View;  
    12. import android.view.View.OnClickListener;  
    13. import android.widget.Button;  
    14. import android.widget.TextView;  
    15.  
    16. public class Main extends Activity implements OnClickListener  
    17. {  
    18.     private IMyService myService = null;  
    19.     private Button btnInvokeAIDLService;  
    20.     private Button btnBindAIDLService;  
    21.     private TextView textView;  
    22.     private ServiceConnection serviceConnection = new ServiceConnection()  
    23.     {  
    24.         @Override  
    25.         public void onServiceConnected(ComponentName name, IBinder service)  
    26.         {  
    27.               //  獲得AIDL服務(wù)對象  
    28.             myService = IMyService.Stub.asInterface(service);  
    29.             btnInvokeAIDLService.setEnabled(true);  
    30.         }  
    31.         @Override  
    32.         public void onServiceDisconnected(ComponentName name)  
    33.         {  
    34.         }  
    35.     };  
    36.     @Override  
    37.     public void onClick(View view)  
    38.     {  
    39.         switch (view.getId())  
    40.         {  
    41.             case R.id.btnBindAIDLService:  
    42.                    //  綁定AIDL服務(wù)  
    43.                 bindService(new Intent("net.blogjava.
      mobile.complex.type.aidl.IMyService"),  
    44.                         serviceConnection, Context.BIND_AUTO_CREATE);  
    45.                 break;  
    46.             case R.id.btnInvokeAIDLService:  
    47.                 try  
    48.                 {  
    49.                     String s = "";  
    50.                        //  調(diào)用AIDL服務(wù)中的方法  
    51.                     s = "Product.id = " + myService.
      getProduct().getId() + "\n";  
    52.                     s += "Product.name = " + myService.
      getProduct().getName() + "
      \n";  
    53.                     s += "Product.price = " + myService.
      getProduct().getPrice() + "
      \n";              
    54.                     s += myService.getMap("China", 
      myService.getProduct()).toString();  
    55.                     textView.setText(s);  
    56.                 }  
    57.                 catch (Exception e)  
    58.                 {  
    59.                 }  
    60.                 break;  
    61.         }  
    62.     }  
    63.     @Override  
    64.     public void onCreate(Bundle savedInstanceState)  
    65.     {  
    66.         super.onCreate(savedInstanceState);  
    67.         setContentView(R.layout.main);  
    68.         btnInvokeAIDLService = (Button) findViewById(R.id.btnInvokeAIDLService);  
    69.         btnBindAIDLService = (Button) findViewById(R.id.btnBindAIDLService);  
    70.         btnInvokeAIDLService.setEnabled(false);  
    71.         textView = (TextView) findViewById(R.id.textview);  
    72.         btnInvokeAIDLService.setOnClickListener(this);  
    73.         btnBindAIDLService.setOnClickListener(this);  
    74.     }  

    首先運行服務(wù)端程序,然后運行客戶端程序,單擊【綁定AIDL服務(wù)】按鈕,待成功綁定后,單擊【調(diào)用AIDL服務(wù)】按鈕,會輸出如圖8.27所示的內(nèi)容。

     
    圖8.27  調(diào)用傳遞復(fù)雜數(shù)據(jù)的AIDL服務(wù)

    posted on 2010-11-19 17:09 小菜毛毛 閱讀(274) 評論(0)  編輯  收藏 所屬分類: andriod
    主站蜘蛛池模板: 和日本免费不卡在线v| 亚洲影院天堂中文av色| 久久久久久国产精品免费免费男同 | 亚洲av无码乱码国产精品fc2| 黄床大片免费30分钟国产精品| 亚洲视频人成在线播放| 国产免费区在线观看十分钟 | 香蕉免费在线视频| 亚洲色欲久久久综合网东京热| 成人无码精品1区2区3区免费看| 最新国产AV无码专区亚洲| 巨胸喷奶水www永久免费| 久久亚洲综合色一区二区三区| 国产一精品一AV一免费| 久久精品亚洲一区二区| 蜜桃成人无码区免费视频网站| 中文字幕亚洲综合久久| 日韩亚洲国产高清免费视频| 亚洲精品一二三区| 国产精品公开免费视频| 天堂亚洲免费视频| 久久久久亚洲AV无码专区桃色| 国产综合免费精品久久久| 亚洲AV无码乱码国产麻豆穿越| 99re免费在线视频| 久久精品国产亚洲AV久| 日韩成人免费aa在线看| 日日摸夜夜添夜夜免费视频 | 亚洲精品成人片在线观看精品字幕| 成人片黄网站色大片免费观看APP| 久久亚洲精品成人综合| 国产成人免费午夜在线观看| 亚洲第一区二区快射影院| 国产成人精品免费直播| 国产JIZZ中国JIZZ免费看| 亚洲AV日韩AV永久无码久久| 成年黄网站色大免费全看| 人人狠狠综合久久亚洲| 精品国产日韩亚洲一区| 最近2018中文字幕免费视频| 亚洲AV日韩综合一区尤物|