Android組件化實例精講(service註冊方式)
- 2020 年 3 月 26 日
- 筆記

接著上兩篇文章中的組件化前奏,今天我們把組件化給整體串聯起來形成一個簡易的案例。
大綱:
1 如何讓各個獨立的組件在殼工程中可隨意拿取訪問?
2如何進行組件數據傳遞?
一 如何在殼中隨意拿取組件
為了可隨時拿取組件我們需要藉助一個單例來統一管理這些組件----這樣無論是殼中還是組件中均可以隨意拿取各個組件進行交互
public class ServiceFactory { private ServiceFactory() { } private static ServiceFactory serviceFactory = new ServiceFactory(); public static ServiceFactory getInstance() { return serviceFactory; } private ILoginService loginService; public ILoginService getLoginService() { return loginService; } public void setLoginService(ILoginService loginService) { this.loginService = loginService; }}從上問程式碼我們可以通過ServiceFactory拿取到各個組件,但是怎麼讓各個組件能夠完美的在殼工程啟動時註冊進來呢?這就需要我們之前說的各個組件如何隨殼工程一起啟動啦 不是太了解的看之前的文章,我們直接上程式碼
此處需要分為兩部分
1 組件啟動的Application中註冊
2 註冊金組件中類為了解耦添加中間service來註冊進ServiceFactory,使用是通過service間接訪問組件和完成數據傳遞
①組件對應的Application
public class LoginApplication extends Application implements IAppService { @Override public void initApp(Application mainApp) { ServiceFactory.getInstance().setLoginService(new LoginService()); } @Override public void initAppFinish() {//做一些基礎的針對性的配置操作 }}② 中間service
public class LoginService implements ILoginService { @Override public void launch(Context context, String userId) { Intent intent = new Intent(context, LoginActivity.class); intent.putExtra("userId", userId); context.startActivity(intent); } @Override public Fragment getFragment(FragmentManager fragmentManager, int viewId, ViewGroup root) { return null; }}②中的launch即是中間媒介用於進行Activity啟動和參數傳遞
大致就是這些了,我們來看看是如何在殼工程中使用的吧
public void launchLogin(View view) { ServiceFactory.getInstance() .getLoginService() .launch(this, "123"); }
