第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

Android中組件化的一種實現(xiàn)方式Arouter的使用

標(biāo)簽:
Android

ARouter是阿里2017年开源的页面路由框架,是今年比较火的一个开源框架,目前在Github上已经有2.2k的小星星了。官方对这个框架的定义是ARouter是阿里巴巴开源的Android平台中对页面、服务提供路由功能的中间件,提倡的是简单且够用


Google提供的原声路由主要是通过intent,可以分成显示和隐式两种。显示的方案会导致类之间的直接依赖问题,耦合严重;隐式intent需要的配置清单中统一声明,首先有个暴露的问题,另外在多模块开发中协作也比较困难。只要调用startActivity后面的环节我们就无法控制了,在出现错误时无能为力,而ARouter可以在跳转过程中进行拦截,出现错误时可以实现降级策略。

要使用Arouter我们现在build.gradle引入:

annotationProcessor 'com.alibaba:arouter-compiler:1.1.4'
compile'com.alibaba:arouter-api:1.3.1'

在项目工程下的build.gradle的dependencies下引入:

classpath "com.alibaba:arouter-register:1.0.2"


然后在application中的oncreate初始化:

ARouter.openLog();
ARouter.openDebug();
ARouter.init(this);

然后建立一个activity:

public class ArouterTest extends Activity {

    public static void startActivity(Context context) {
        Intent intent = new Intent();
        intent.setClass(context,ArouterTest.class);
        context.startActivity(intent);
    }


    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.arouter_activity_main);
        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //页面
                ARouter.getInstance().build("/test3/activity3").navigation();
            }
        });

        findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                
                TestService service = (TestService) ARouter.getInstance().build("/testservice/hello").navigation();
                service.sayHello("hello sdsdf");

            }
        });

    }
}

和一个service:

@Route(path = "/testservice/hello")
public class TestServiceImpl implements TestService {
    Context mContext;

    @Override
    public void sayHello(String name) {
        Toast.makeText(mContext, "Hello " + name, Toast.LENGTH_SHORT).show();
    }

    /**
     * Do your init work in this method, it well be call when processor has been load.
     *
     * @param context ctx
     */
    @Override
    public void init(Context context) {
        mContext = context;
    }
}

在子工程mylibrary那里建立一个activity:

@Route(path = "/test3/activity3", name = "测试用 Activity")
public class MainActivity3 extends Activity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
    }
}

再建立一个service:

public interface TestService extends IProvider {
    void sayHello(String name);
}

运行效果:

https://img1.sycdn.imooc.com//5c1ed12c0001aec806141174.jpg

点击页面路由就可以跳转去MainActivity3

点击服务路由就可以找到TestService那个服务,然后调用sayHello

代码在:https://github.com/nickgao1986/StepSport

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消