您的位置 首页 > 腾讯云社区

Android组件化实例精讲(service注册方式)---大话swift

接着上两篇文章中的组件化前奏,今天我们把组件化给整体串联起来形成一个简易的案例。

大纲:

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"); } ---来自腾讯云社区的---大话swift

关于作者: 瞎采新闻

这里可以显示个人介绍!这里可以显示个人介绍!

热门文章

留言与评论(共有 0 条评论)
   
验证码: