Articles of 架构

无模式数据存储与模式数据存储的优点

我想为我的应用程序select一个后端Web服务。 阅读这些服务的文档(Parse,Proxomo,Cocoafish,StackMob等)显示,其中一些提供以无模式forms存储数据,而其他提到该模式必须先指定。 我明白数据的模式是什么,希望模式是易于使用,但要知道每个的优点和缺点。 任何解释将不胜感激。

互联网检查,使用MVP,RX和Retrofit的地方

我已经通过这个和这个职位。 所以我真的同意第二个post,主持人不应该知道android的具体事情。 所以我在考虑的是把互联网检查放在服务层。 我正在使用Rx Java进行networking调用,所以我可以在进行服务调用之前进行networking检查,所以这样我需要手动抛出和IOException,因为当networking不可用时需要在视图上显示错误页面,另一个select是我创build我自己的错误类没有互联网 Observable<PaginationResponse<Notification>> response = Observable.create(new Observable.OnSubscribe<PaginationResponse<Notification>>() { @Override public void call(Subscriber<? super PaginationResponse<Notification>> subscriber) { if (isNetworkConnected()) { Call<List<Notification>> call = mService.getNotifications(); try { Response<List<Notification>> response = call.execute(); processPaginationResponse(subscriber, response); } catch (IOException e) { e.printStackTrace(); subscriber.onError(e); } } else { //This is I am adding manually subscriber.onError(new IOException); } subscriber.onCompleted(); […]

Android MVP解释

我试图了解什么是最好的方式来编写一个“干净的”Android应用程序。 我发现了一篇关于它在哪里使用3层架构的有趣文章 。 现在我读了一下,android使用MVPdevise模式并试图理解这一点。 我理解MVP原则(在android环境中)的方式是: 模型层是逻辑类 主持人是“链接到”XML(活动)的类, 被动的观点是XML的。 它是否正确? 如果这是正确的, 那么 3层模型是否完全符合MVP原则也是正确的 ,因为: 来自3层架构的表示层适合MVP的演示者层 来自三层架构的业务和数据层完全符合MVP的模型部分? 我希望我的问题很清楚,因为这对我来说是一个复杂的话题。 也许这清除了我的视野(想法)关于这个..

如何在Android上的SQLite数据库中实现“inheritance”关系

考虑这个简单的模型: 基本位置表: +——————————-+ | Locations | +——————————-+ |(PK) _id Integer Autoincrement | | name Text(100) Not null | | is_in_range Integer | +——————————-+ 而更专业的表格称为WifiLocation: +——————————-+ | wifi_location | +——————————-+ | ssid Text(0) Not null | | signal_threshold Real | |(PK) _id Integer | +——————————-+ 我希望这个模型将代表从WifiLocationinheritance的BaseLocation 。 所以我在wifi_locations表的_id列上添加了一个REFERENCES子句: CREATE TABLE wifi_locations (_id Integer primary key references […]

Android应用程序级别范围variables

我明白,没有可用的应用级范围可以定义共享的逻辑/数据,而且每个活动本质上是一个由清单绑定在一起的独立应用程序。 但是我有一组用户访问权限,我通过Web服务调用获取,并且不希望在每个活动onCreate()进行此调用。 我在应用程序中使用SharedPreferences ,但由于权限不打算由用户可编辑,Android设备上的平面文件曝光感觉像处理这种不安全的方式。 如果应用程序重新启动,我需要重新请求这个信息,所以我相信最便宜的方法是将其存储在一个variables中。 我意识到IntentExtras,但我们正在讨论一个设置“对象”,而不是一个原始types。 正确的方式来处理这种情况?

Android的体系结构devise – 如何做到这一点?

如何一个Android应用程序的好架构看起来像? 是否所有的“工作/业务逻辑”都是在后台服务中完成的,Activity只和服务进行通信,以从某处(本地/远程)查询/获取数据? 你会实施活动称为真正的Android服务的“服务”吗? 或者是一个POJO-Singleton来完成这个工作(也许使用后台线程)。 或者在你的活动中实例化后台线程,用于耗时的操作(查询web服务)。 你如何以正确的方式抽象你的数据访问? 你会用ContentProvider来访问/抽象你的数据吗? 如何/从哪里查询? 活动? 服务? ..? 我试图寻找一个好的应用程序架构devise,但我只发现了Android架构的外观,而不是Android应用程序的样子。 那么你对此有何看法? Android应用程序的哪些组件应该相互通信以确保最佳的可扩展性/封装性,…?

清洁架构:如何在UI中反映数据层的变化

我正在尝试基于Android中的Bob叔叔Clean Architecture进行devise 。 问题: 我想解决的是如何使在一个存储库中生成的更改反映在应用程序的其他部分,如其他存储库或视图。 这个例子 我为这个例子devise了一个非常简单的例子。 请注意,边界界面已被删除,以保持图表小。 想象一下,一个显示video列表的应用程序(标题,thumnail和类似的计数),点击一个video,你可以看到细节(你可以喜欢/不喜欢的video)。 此外,该应用程序有统计系统,统计用户喜欢或不喜欢的video数量。 这个应用程序的主要类可以是: 对于video部分/模块: 对于统计部分/模块: 目标 现在想象一下,检查你的统计数据,然后浏览video列表,打开其中的细节,然后点击类似button。 之后类似的被发送到服务器,应用程序的几个元素应该知道的变化: 当然,详细视图,应该更新与更改(这可以通过callback,所以没有问题) video列表应更新给定video的“喜欢”数量 StatsRepository可能会在投票新video后更新/无效caching 如果统计数据列表可见(想象一个分屏),它也应该显示更新的统计数据(或者至less接收事件以重新查询数据) 问题 什么是解决这种交stream的常见模式? 请尽可能完整地填写答案,指定事件的生成位置,通过应用程序传播的方式等。 注:赏金将被给予完整的答案

什么是在项目中组织Android代码的标准方式

我是Android新手,我想知道在Android项目中编写代码的正确方式是什么,或者我们应该在项目示例中使用哪种体系结构或模型,例如n-tire,MVC或其他?

最佳实践:扩展或覆盖Android库项目类

我们正在使用Android库项目来共享Android应用程序的不同构build(目标)中的核心类和资源。 针对每个特定目标的Android项目引用Core库项目 (在幕后,Eclipse创build并引用来自所引用的库项目的jar)。 覆盖图像和XML布局等资源很容易。 放置在目标项目中的资源文件(例如应用程序图标或XML布局)会在构build应用程序时自动覆盖具有相同名称的核心库资源。 然而,有时候需要重写一个类来实现特定于目标的行为。 例如,Amazon目标首选项屏幕不能包含指向Google Play应用程序页面的链接,需要更改Amazon项目的preferences.xml和首选项Activity类。 目标是减less目标项目中重复代码的数量,同时尽可能多地从Core库中删除特定于目标的代码。 我们想出了几种方法来实现特定于不同目标的逻辑: 在Core库类中编写特定于目标的函数,并使用if / switch块根据产品SKUselect行为。 这种方法不是非常模块化,而且会使Core库代码库膨胀。 在目标项目中扩展特定的Core类并根据需要覆盖基类(Core)类的function。 然后保持对Core库中的基类对象的引用,并用扩展类对象(从如何覆盖Android库项目中的类)实例化它? 是否有其他策略来重写或扩展Android库项目类? 什么是在Android应用程序目标之间共享和扩展公共类的最佳实践?

Android是否阉割ARM的Jazelle技术?

我所看到的理由是,我们应该说Android中的Java字节码“混蛋”就是性能。 (我怀疑还有另外一个原因。)但是,通过改变字节代码,他们没有使用Jazelle模拟等硬件加速技术,从而降低了Mobile Java平台的性能。 我知道目标平台是一个基于ARM的移动平台。 虽然它可能给你更好的性能在其他CPU架构似乎吐在面对ARM和Jazelle。 Java性能有什么样的量化效应? 它是否真的提高了性能,如果是这样的话? 对其他平台有什么影响? (即x86,mips,yadda,yadda,yadda …)