Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android實現簡單的aidl示例

Android實現簡單的aidl示例

編輯:Android開發實例

 1.首先在src目錄下建立一個file,命名為IPerson.aidl

  1. package com.example.aidldemo; 
  2.  
  3. interface IPerson { 
  4.     void setAge(int age); 
  5.     void setName(String name); 
  6.     String display(); 

2.接著要實現這個aidl裡面的方法

  1. package com.example.aidldemo; 
  2.  
  3. import android.os.RemoteException; 
  4.  
  5. public class IPersonImpl extends IPerson.Stub{ 
  6.     //聲明兩個變量 
  7.     private int age; 
  8.     private String name; 
  9.     @Override 
  10.     public void setAge(int age) throws RemoteException { 
  11.         this.age=age; 
  12.     } 
  13.  
  14.     @Override 
  15.     public void setName(String name) throws RemoteException { 
  16.         this.name=name; 
  17.     } 
  18.  
  19.     @Override 
  20.     public String display() throws RemoteException { 
  21.         return "name="+name+";age="+age; 
  22.     } 
  23.  

3.建立一個service

  1. package com.example.aidldemo; 
  2.  
  3. import com.example.aidldemo.IPerson.Stub; 
  4.  
  5. import android.app.Service; 
  6. import android.content.Intent; 
  7. import android.os.IBinder; 
  8.  
  9. public class MyRemoteService extends Service { 
  10.     private Stub iPerson=new IPersonImpl(); 
  11.     @Override 
  12.     public IBinder onBind(Intent intent) { 
  13.         // TODO Auto-generated method stub 
  14.         return iPerson; 
  15.     } 
  16.  

4.在activity中啟動服務

  1. package com.example.aidldemo; 
  2.  
  3. import android.app.Activity; 
  4. import android.content.Intent; 
  5. import android.os.Bundle; 
  6. import android.view.Menu; 
  7.  
  8. public class MainActivity extends Activity { 
  9.  
  10.     @Override 
  11.     protected void onCreate(Bundle savedInstanceState) { 
  12.         super.onCreate(savedInstanceState); 
  13.         setContentView(R.layout.activity_main); 
  14.         Intent intent = new Intent(); 
  15.         // 設置Intent Action 屬性 
  16.         intent.setAction("com.example.aidldemo.action.MY_REMOTE_SERVICE"); 
  17.         // 綁定服務 
  18.         startService(intent); 
  19.     } 
  20.  
  21.     @Override 
  22.     public boolean onCreateOptionsMenu(Menu menu) { 
  23.         // Inflate the menu; this adds items to the action bar if it is present. 
  24.         getMenuInflater().inflate(R.menu.activity_main, menu); 
  25.         return true; 
  26.     } 
  27.  

5.新建一個項目,把上一個項目中的aidl拷貝到項目中
在activity中實現如下:

  1. package com.example.aidlclient; 
  2.  
  3. import android.app.Activity; 
  4. import android.app.Service; 
  5. import android.content.ComponentName; 
  6. import android.content.Intent; 
  7. import android.content.ServiceConnection; 
  8. import android.os.Bundle; 
  9. import android.os.IBinder; 
  10. import android.view.Menu; 
  11. import android.view.View; 
  12. import android.view.View.OnClickListener; 
  13. import android.widget.Button; 
  14. import android.widget.Toast; 
  15.  
  16. import com.example.aidldemo.IPerson; 
  17.  
  18. public class MainActivity extends Activity { 
  19.     private IPerson iPerson; 
  20.     private Button btn; 
  21.     // 實例化ServiceConnection 
  22.         private ServiceConnection conn = new ServiceConnection() { 
  23.             @Override 
  24.             synchronized public void onServiceConnected(ComponentName name, IBinder service) { 
  25.                 // 獲得IPerson接口 
  26.                 iPerson = IPerson.Stub.asInterface(service); 
  27.                 System.out.println("iperson----------:"+iPerson); 
  28.             } 
  29.  
  30.             @Override 
  31.             public void onServiceDisconnected(ComponentName name) { 
  32.                 iPerson=null; 
  33.             } 
  34.         }; 
  35.  
  36.         @Override 
  37.         public void onCreate(Bundle savedInstanceState) { 
  38.             super.onCreate(savedInstanceState); 
  39.             // 設置當前視圖布局 
  40.             setContentView(R.layout.activity_main); 
  41.             // 實例化Button 
  42.             btn = (Button) findViewById(R.id.button1); 
  43.             //為Button添加單擊事件監聽器 
  44.              
  45.             // 實例化Intent 
  46.             Intent intent = new Intent("com.example.aidldemo.action.MY_REMOTE_SERVICE"); 
  47.             // 設置Intent Action 屬性 
  48.             bindService(intent, conn, Service.BIND_AUTO_CREATE); 
  49.              
  50.             btn.setOnClickListener(new OnClickListener() { 
  51.                 @Override 
  52.                 public void onClick(View v) { 
  53.                      
  54.                      
  55.                     try{ 
  56.                         iPerson.setAge(20); 
  57.                         iPerson.setName("南瓜餅"); 
  58.                         String msg = iPerson.display(); 
  59.                         // 顯示方法調用返回值 
  60.                         Toast.makeText(MainActivity.this, msg, Toast.LENGTH_LONG).show(); 
  61.                     }catch (Exception e) { 
  62.                         e.printStackTrace(); 
  63.                     } 
  64.                 } 
  65.             }); 
  66.              
  67.         } 
  68.          
  69.         @Override 
  70.         protected void onDestroy() 
  71.         { 
  72.             // TODO Auto-generated method stub 
  73.             unbindService(conn); 
  74.             super.onDestroy(); 
  75.         } 
  76.  
  77.     @Override 
  78.     public boolean onCreateOptionsMenu(Menu menu) { 
  79.         // Inflate the menu; this adds items to the action bar if it is present. 
  80.         getMenuInflater().inflate(R.menu.activity_main, menu); 
  81.         return true; 
  82.     } 
  83.  

目截圖:

csdn下載地址:http://download.csdn.net/detail/wenwei19861106/4879164

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved