架构Android探索

App最简易的组件化思想开发—隐式跳转无图标应用

2018-01-02  本文已影响20人  清明捉鬼

做久了App就知道一锅熟大杂烩不好受,所以就探索了一下最简易稳固的方式,将内容剥离主程序。

//获取版本号代码
try {
         PackageManager manager = this.getPackageManager();
         PackageInfo info = manager.getPackageInfo("jsnj33.com.sonlauncher1", 0);
         String versionName = info.versionName;
          int versionCode = info.versionCode;
      } catch (Exception e) {
          e.printStackTrace();
      }

在主App上增加子模块管理并添加检测,如果子模块版本增加则下载子模块,此时会需要用户安装,需要在下载前进行业务引导,用户可能会没有安装并退出App,所以在第二次进入检测后,发现还是旧版本,但是从用户角度来说再下载一遍,有点烦躁,所以对子模块App的名字要进行规则命名严格管控,下载前通过子模块apk包名判断是否该下载。


猜想总结:

所遇弊端:

1.跳转时貌似遇到“冷启动慢的问题”,在第一次跳转时会遇到白屏,状态栏都是白的,看起来挺奇怪的,但是第二次打开后应该属于“热启动”没有这些问题,正常如初。
2.由于是几乎完全隔离的两个App,那么第三方包之类的不会进行共用,各个组件包重复率高。
3.通信不便,老生常谈,不作解释。
(这些弊端都可以想办法解决)


1.宿主App所做:

//跳转到子模块APP
Intent intent = new Intent();
//EaseConstant.PAGENAME:子模块包名;
//"jsnj33.com.pigapp.MainActivity":子模块具体Activity(完整路径)  EaseConstant.PAGENAME为子模块包名
 ComponentName cn = new ComponentName(EaseConstant.PAGENAME,"jsnj33.com.pigapp.MainActivity");
 intent.setComponent(cn);
 intent.setAction("android.intent.action.MAIN");
 intent.putExtra("exe","启动了");
 try {
     startActivityForResult(intent, RESULT_OK);
  } catch (Exception e) {
     ToastUtil.showToast(context,"暂无该子模块,请下载安装!");
 }

2.子模块App所做
a.若在宿主Activty里面点击按钮跳转子模块App 则子模块设置:



<!-- android:host为宿主Activity名  android:scheme为宿主Activity的包名-->
<activity android:name=".MainActivity">
      <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
          <data android:host="MainActivity" android:scheme="com.danze.im.ui"/>
     </intent-filter>
</activity>

b.若在宿主fragment里面点击按钮跳转到子模块App 则子模块App设置

<activity android:name=".MainActivity">
    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
      <!-- android:host:宿主App Fragment类名  android:scheme:宿主App Fragment包名 -->
      <data android:host="GridWorkFragment"     
          android:scheme="com.danze.im.ui.fragment"/>
   </intent-filter>
</activity>
上一篇下一篇

猜你喜欢

热点阅读