前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android组件化实例精讲(service注册方式)

Android组件化实例精讲(service注册方式)

作者头像
大话swift
发布2020-03-26 00:56:58
7080
发布2020-03-26 00:56:58
举报
文章被收录于专栏:大话swift

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

大纲:

1 如何让各个独立的组件在壳工程中可随意拿取访问?

2如何进行组件数据传递?

一 如何在壳中随意拿取组件

为了可随时拿取组件我们需要借助一个单例来统一管理这些组件----这样无论是壳中还是组件中均可以随意拿取各个组件进行交互

代码语言:javascript
复制
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

代码语言:javascript
复制
public class LoginApplication extends Application implements IAppService {
    @Override    public void initApp(Application mainApp) {        ServiceFactory.getInstance().setLoginService(new LoginService());
    }
    @Override    public void initAppFinish() {//做一些基础的针对性的配置操作
    }}

② 中间service

代码语言:javascript
复制
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启动和参数传递

大致就是这些了,我们来看看是如何在壳工程中使用的吧

代码语言:javascript
复制
    public void launchLogin(View view) {        ServiceFactory.getInstance()                .getLoginService()                .launch(this, "123");    }
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大话swift 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档