zoukankan      html  css  js  c++  java
  • android隐式intent使用场景解析

      Android 隐式intent相信大家都有用过,大部分场景我们用显式intent已经能满足我们的业务需求,隐式intent大部分都是用来启动系统自带的Activity或Service之类的组件。昨天有个业务场景就是,module app依赖于第三方依赖库module library,我在module library里面有个Activity A,现在需要在Activity A里面启动 module app里面的Activity B。一般的解决方法是:让module library依赖于module app,这样library就能找到app里面的Activity B,可是这样就变成了双向依赖,显然是不可能的。我想了一下,可以用隐式intent来实现这个功能,而且实现代码最简洁,不用修改或添加其他代码。

      隐式intent很简单,首先要在 module app的AndroidManifest.xml里面注册Activity B,代码如下:

     <activity
                android:name="com.xjx.demo.home.BActivity"
                android:screenOrientation="portrait">
                <intent-filter>
                    <action android:name="com.demoBActivity.action" />
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </activity>

    <intent-filter>是隐式intent必须的,其中<action android:name>属性是自定义的,写什么都可以,最好是自己的项目名,<category >属性使用默认的 <category android:name="android.intent.category.DEFAULT" />。

      注册Activity完成了,现在可以在module library里的Activity A启动module app里的Activity B了。

    代码如下:

    //这里用到了隐式意图,来启动app库里面的activity
                    Intent intent = new Intent();
                    intent.setAction("com.demoBActivity.action");
                    intent.addCategory("android.intent.category.DEFAULT");
                    startActivity(intent);  

      action写我们AndroidManifest注册的action即可。

      这样即可实现在被依赖的module libray里面启动主module app中的Activity或其他组件。实现了module之间代码的解耦。

  • 相关阅读:
    web.config中的customErrors标记的用法
    算法系列15天速成[索引]
    log4net的简单使用
    Cookie帮助类
    ASPxTreeList及ASPxGridView使用
    javascript获取页面中的位置
    如何部署windows服务?
    基于T4模板引擎生成静态网站(CMS)
    SqlServer实现递归查询
    安卓(AndRoid)开发环境搭建之HelloWord
  • 原文地址:https://www.cnblogs.com/xjx22/p/5551034.html
Copyright © 2011-2022 走看看