日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

android 提供服务,GitHub - FamliarMan/AndroidServiceProvider: 为模块化提供的一个服务发现库...

發布時間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 提供服务,GitHub - FamliarMan/AndroidServiceProvider: 为模块化提供的一个服务发现库... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

AndroidServiceProvider是為了解決模塊化過程中各模塊服務統一獲取的難題而產生的,具體情況請參照這篇文章

Android模塊化中的服務發現機制

注意混淆

這里特別強調,所有注冊的類都需要避開混淆,因為這里是通過反射實現的

依賴引入

api 'com.jianglei:serviceprovider:0.1'

基本使用

以源碼中的示例代碼為例講解

首先看下當前依賴情況:

當前需求:獲取各模塊名稱

1. 在底層模塊編寫服務接口

比如在bottomlibrary模塊中增加一個服務:

public interface IModuleName {

/**

* 獲取所屬module的名稱

* @return module的名稱

*/

String getModuleName();

}

2.各模塊實現自己的服務

比如在businessone模塊中實現如下:

public class OneModuleName implements IModuleName {

@Override

public String getModuleName() {

return "businessone";

}

}

在businesstwo模塊實現如下:

public class TwoModuleName implements IModuleName {

@Override

public String getModuleName() {

return "businesstwo";

}

}

3. 各模塊暴露自己提供的服務

比如在businessone的AndroidManifest.xml中定義一個meta-data:

android:value="module_name"/>

比如在businesstwo模塊中:

android:value="module_name"/>

注意,請記住此處的value:module_name,同一個服務必須相同

4. 注冊服務

推薦在Application中調用,越早越好:

public class MyApplication extends Application {

@Override

public void onCreate() {

super.onCreate();

//注意,此處的“module_name"必須和AndroidManifest.xml中注冊的value的值相同,

//此處的IModuleName.class是用來保證各模塊注冊的服務都是它的實現,否則會報錯

JlServiceProvider.register(this,"module_name", IModuleName.class);

}

}

5.獲取所有服務

經過上面的步驟,我們已經能成功的拿到所有模塊的服務了,比如我在app模塊的MainActivity中:

//此處必須保證”module_name"注冊的服務是IModuleName的實現,否則強轉會報錯

List moduleNames = JlServiceProvider.getServices("module_name");

StringBuilder sb = new StringBuilder("目前注冊的模塊有:\n");

for(IModuleName moduleName : moduleNames){

sb.append(moduleName.getModuleName()).append("\n");

}

TextView tvContent = findViewById(R.id.tvContent);

tvContent.setText(sb.toString());

總結

以上是生活随笔為你收集整理的android 提供服务,GitHub - FamliarMan/AndroidServiceProvider: 为模块化提供的一个服务发现库...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。