【问题标题】:Content and Data call intensive Application in TitaniumTitanium 中的内容和数据调用密集型应用程序
【发布时间】:2012-08-10 06:26:21
【问题描述】:

我开始开发一个 Titanium 应用程序,它是内容和数据调用密集型应用程序。

我需要一些关于构建此类应用程序时要遵循的最佳实践的指导。 我非常了解 commonJS 方法。我想知道最佳实践编码来限制或消除 Appcelerator 中的内存/缓存问题。如何处理或处理这些问题?

谢谢

【问题讨论】:

  • 您在此处引用的具体内存缓存问题是什么?
  • 嗨 Aaron,我们可以说内存缓存是内存泄漏,或者当有适当的内存释放时,数据会继续进入应用程序。以及我如何设法在单一上下文中运行我的应用程序(是否必须让您在单一上下文中运行?)。

标签: javascript titanium appcelerator titanium-mobile appcelerator-mobile


【解决方案1】:

我使用了我想出的 MVC 和 M V VM 的混合体:

MVC 适合用于重定向您的站点/用户并将用户作为参数的 Web URL。因此,控制器是应用程序的入口点。

在 .net 的 MVVM 模式中,视图是应用程序的入口点。 View 请求 ViewModel(将事件连接到 UI)和 ViewModel 请求到业务(模型)。最后,当到达数据时,通过事件冒泡“反映”数据。这听起来很麻烦,但实际上不是

使用相同的方法,我使用以下方法

UI > C > B > 技术 > 互联网

在控制器上我订阅事件,在技术中我触发了它们。

其中“技术”抽象了所有技术(SQLite、JSON、Ti.App.Properties 等)

业务了解实体和图标,但不了解技术方面

getIcon('Badge'){ tech.getIcon('Badge') } )

在技术上我们可以有像 var 这样的字典

getIcon(icon)
{
    var Icon = { 
            'Badge': 'src/cfg/img/badge.png' 
        }  

    return Icon[icon]
}

所以控制器看起来像:

oTable = ui.TableEmployees() // our custom made TableView at 'ui.js'
Ti.App.addEventListener( 'EmployeesUpdated', function(e){ oTable.data = e.data } )

最后,每次我需要更新信息时,我都会去

business.refreshEntity('Employees')

企业访问技术的地方

tech = require('src/tech')
refreshEntity(entity){ tech.refreshEntity(entity) }

终于进入技术领域

refreshEntity(entity)
{
    HTTPClient = new Ti.Network.HTTPClient( { onload:..., onerror:... } )
    HTTPClient.send()
    data = transform(response)
    if (data != cachedData)
        Ti.App.fireEvent( 'EmployeesUpdated', {data: data} )
}

这样您就可以拉动刷新、计时器等,并且只有当数据发生更改时,您才能将其提升到所有受影响的视图

【讨论】:

  • 我喜欢你的方法,因为我也是 MVC/MVVM 设计的忠实粉丝。只是好奇......你如何处理你的缓存数据?意思是,这是一个与您的数据对象直接可比的数组吗?您使用自定义比较器吗?缓存的数据只是存储在内存中(大型数据集的资源问题),还是 SQLite 或类似的?我认为缓存问题在这次谈话中很重要,因为 Ajeet Pratap Maurya 对性能、内存和缓存的关注。谢谢:)
  • 感谢 JC Guerrero 的回答。我也使用类似的程序。我有我的 view.js 文件,该文件将 controller.js 用于附加到其控件的任何事件,并且进一步可以调用调用 WS 或任何 sql db 或任何自定义函数的 model.js。但是使用 commonJS 如何让我们的整个应用程序在单一上下文下运行以及如何实现数据缓存。
猜你喜欢
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
  • 2015-03-03
  • 1970-01-01
  • 2010-11-04
  • 2018-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多