我正在开发一种可以部署到许多不同组织的产品(理想情况下,数十种).系统的每个部署(由iOS和Android的本机应用程序组成)将涉及以下内容:
换句话说,核心功能在所有部署中保持不变,但每个实例看起来都不同,挂钩到不同的身份验证系统,并启用/禁用某些功能.
我的问题:为了最大限度地减少重复并简化部署过程,管理我们的2个移动代码库(iOS和Android)的最佳策略是什么?
我们正在讨论的三个解决方案是:
创建一个跨所有实例共享的核心库(作为子项目/库项目或git子模块),并在顶部添加一个薄层,其中包含品牌和任何配置详细信息.
维护具有核心功能的Git分支,并为包含其他代码的每个部署创建新分支.
做一些完全不同的事情,一些更聪明的人在stackoverflow建议.
哪个听起来最棒?在此先感谢您的任何反馈!!
我正在为我的Android应用程序构建自定义日历视图,使您可以在几个月之间滑动。我已经创建了自定义日历正方形视图,并将其嵌入到自定义日历月视图中,并且一切都可以在1个月的比例上完美运行。
不幸的是,现在我被困住了。现在,我想将自定义日历月视图嵌入到无限视图分页器中,以便可以无限期地前后滚动日历。
我尝试通过使用一个简单的技巧将此水平寻呼机调整为无限滚动。我持有3个日历月视图数组,并根据用户滚动到的位置更新列表。例...
不过,当我执行此操作时,刷到下个月时屏幕上会出现明显的闪烁。
这是向前滚动的代码(注意:向后滚动有相同的问题)
private void updateViewsForForwardScroll() {
// Note: INDEX_PREV = 0; INDEX_CURR = 1; INDEX_NEXT = 2
((CalendarMonthView) getChildAt(INDEX_PREV)).showMonth(oneMonthPriorTo(currentMonth));
((CalendarMonthView) getChildAt(INDEX_CURR)).showMonth(currentMonth);
setCurrentScreen(INDEX_CURR, false);
((CalendarMonthView) getChildAt(INDEX_NEXT)).showMonth(oneMonthAfter(currentMonth));
}
Run Code Online (Sandbox Code Playgroud)
我认为问题在于setCurrentScreen()在showMonth(currentMonth)之前完成,因此在设置屏幕时,INDEX_CURR上的视图仍在更新。我尝试通过使用以下策略来解决此问题...
我完全没有触摸当前聚焦的视图,但是仍然有闪光!这次,屏幕从9月闪烁到8月,然后又回到9月。
那我在做什么错?有没有办法在用户不知情的情况下做我想做的事情?如果没有,我可以利用现有的课程吗?
(作为附带的问题,我可以通过任何方式直观地自定义Android CalendarView吗?这真的可以解决我的所有问题...)
提前致谢!
我正在 hierarchyviewer 中分析平板电脑 UI,我注意到测量时间中存在以下模式(从树的底部开始向上移动):
... ~40 毫秒 ... ~80 毫秒 ... ~160 毫秒 ... ~320 毫秒 ... ~640 毫秒 ... ~1280 毫秒 ...
我认为问题是带有嵌套权重的 LinearLayouts,因此我删除了整个层次结构中的所有 LinearLayouts 和权重。现在我有这个:
... ~40 毫秒 ... ~80 毫秒 ... ~160 毫秒 ... ~160 毫秒 ... ~160 毫秒 ... ~310 毫秒 ...
更好,但每隔几个级别它仍然会翻倍。可能是什么原因造成的?
这是此路径的完整层次结构(请原谅长度......请随时向我提出您最好的优化技巧):
[generated layouts]
*RelativeLayout [309 ms]
FrameLayout [164 ms]
NoSaveStateFrameLayout [160 ms]
*RelativeLayout [151 ms]
*RelativeLayout [77 ms]
ListView [45 ms]
GridLayout [46 ms]
Spinner [4.4 ms]
TextView [0.1 ms]
Run Code Online (Sandbox Code Playgroud)
*观看时间加倍 …