android AIDL程式間通訊(只介紹了簡單資料型別)
先上git的地址
前言:之前在網上找過一些部落格學習AIDL,但是很多隻有介紹,但是沒有demo可供參考,或者乾脆就做在了一個APP裡面,達不到兩個APP間通訊的要求,所以就自己整理一下。
1.建立服務端的app,新建aidl檔案,點選編譯按鈕(如果不編譯會找不到定義介面生成的Stub抽象類)
2.建立一個server供客戶端呼叫,onBind(Intent intent)方法需要返回自定義的AIDL介面
public class MyService extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return new IBinderImp(){
@Override
public String str(String str) throws RemoteException {
Log.d("MyService",str);
return super.str(str);
}
};
}
}
public class IBinderImp extends My_Service_Int.Stub {
@Override
public String str(String str) throws RemoteException {
return str;
}
}
//注意 android:exported="true" ,不然外部無法訪問到
<service
android:name=".MyService"
android:enabled="true"
android:process=":AidlService"
android:exported="true">
<intent-filter>
<action android:name="com.example.kong.myapplication.MyServer" />
</intent-filter>
</service>
3.新建另一個module(客戶端),拷貝main目錄下的整個AIDL資料夾到此module下,老規矩,編譯,然後編寫程式碼繫結服務端的Service,需要設定其action和application的包名
class MainActivity : AppCompatActivity() {
lateinit var my_service_int: My_Service_Int
lateinit var connection: ServiceConnection
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val intents = Intent("com.example.kong.myapplication.MyServer")
intents.setPackage("com.example.kong.myapplication")
// intents.component = ComponentName("com.example.kong.myapplication", "com.example.kong.myapplication.MyServer")
connection = object : ServiceConnection {
override fun onServiceConnected(name: ComponentName, service: IBinder) {
Log.d("MainActivity", "連結上了")
//AIDL介面呼叫asInterface(Binder) 獲取到介面物件
my_service_int = My_Service_Int.Stub.asInterface(service)
}
override fun onServiceDisconnected(name: ComponentName) {
}
}
bindService(intents, connection, BIND_AUTO_CREATE)
}
override fun onDestroy() {
super.onDestroy()
unbindService(connection)
}
fun sendMessage(v: View) {
try { //呼叫介面中的方法,為其賦值
my_service_int.str("新聞聯播")
} catch (e: RemoteException) {
e.printStackTrace()
}
}
}
接下來就測試服務有沒有收到訊息,我點點點點點點點點點點點點點點點....
好的,測試通過,over
本文參考 https://blog.csdn.net/weixin_41317842/article/details/79138291
相關文章
- Aidl程式間通訊詳細介紹AI
- Android程式間通訊,AIDL工作原理AndroidAI
- 程式間通訊簡介
- 【Redis】資料型別介紹Redis資料型別
- Rust 資料型別介紹Rust資料型別
- 程式間的五種通訊方式介紹
- Webview獨立程式並通過AIDL實現資料通訊WebViewAI
- clickhouse資料型別簡介資料型別
- JAVA_資料型別介紹與基本資料型別之間的運算規則Java資料型別
- [Android]你不知道的Android程式化(4)--程式通訊AIDL框架AndroidAI框架
- 簡單介紹HTTP與HTTPS之間的區別HTTP
- 程式間的五種通訊方式介紹-詳解
- Android 程式之間通訊Android
- golang資料型別基本介紹與使用Golang資料型別
- GBase8s資料型別介紹資料型別
- Android程式間通訊詳解Android
- NumPy 陣列切片及資料型別介紹陣列資料型別
- Python技術之Number資料型別介紹Python資料型別
- 4-AIII–Service跨程式通訊:aidlAI
- 不簡單的基本資料型別資料型別
- groovy 程式語言簡單介紹
- 對GaussDB資料庫和資料管理的簡單介紹資料庫
- VUE 元件間通訊---單向資料流Vue元件
- 變數以及八大資料型別介紹變數大資料資料型別
- MySQL全面瓦解3:資料型別介紹與分析MySql資料型別
- string型別介紹型別
- 1、變數和簡單資料型別變數資料型別
- python:變數和簡單資料型別Python變數資料型別
- 簡單介紹python如何在檔案中部插入資訊Python
- SVG程式碼構成簡單介紹SVG
- 達夢資料庫執行緒簡單介紹資料庫執行緒
- 高通MSM8953 Android處理器效能介紹資料Android
- Android程式間通訊(複習筆記)Android筆記
- Android通過輔助功能實現搶微信紅包原理簡單介紹Android
- 簡單資料型別和引用資料型別對應棧和堆示意圖資料型別
- HSQL 資料庫介紹(1)--簡介SQL資料庫
- RPC簡單介紹RPC
- Python簡單介紹Python