0

我开始研究Titanium应用程序,它是内容和数据通话密集型应用程序。Titanium内容和数据通话密集型应用程序

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

感谢

+0

这里提到的具体内存缓存问题是什么? – 2012-08-13 01:56:41

+0

嗨亚伦,内存缓存,我们可以说内存泄漏或数据持续进入应用程序时,有适当的内存释放。以及我如何在单个环境下运行我的应用程序(是否必须保持单一环境下的运行?)。 – 2012-08-13 04:57:54

回答

2

我使用MVC和M V虚拟机的混合体,我想出了:

MVC是appropiate的Web网址,redirectint yoursite /用户,并以用户为设置了一个param。因此,控制器是应用程序的入口点。

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

使用我用同样的方法如下

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

而且在控制器I suscribe活动,凡在科技我触发他们。

其中, “科技” 抽象所有技术(SQLite的,JSON,Ti.App.Properties等)

商务知道实体和图标,但没有技术方面

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

在哪里,我们的技术可以像变种的字典

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}) 
} 

这样,你可以有上拉

最后刷新,定时器等,只有当数据改变,然后你将其推广到所有受影响的视图

+1

我喜欢你的方法,因为我也是MVC/MVVM设计的忠实粉丝。只是好奇心...你如何处理你的cachedData?意思是,这个数组可以直接与数据对象相比较吗?你使用自定义比较器吗?缓存的数据是刚刚存储在内存中(资源关注大数据集)还是SQLite或类似的?由于Ajeet Pratap Maurya对性能,内存和缓存的关注,我认为缓存问题在这次对话中非常重要。谢谢:) – hiro77 2012-08-10 18:53:08

+0

感谢JC格雷罗你的答案。我也使用类似的程序。我有我的view.js文件,它使用controller.js附加到它的控件的任何事件,并进一步可以调用model.js调用WS或任何SQL数据库或任何自定义函数。但与commonJS如何保持我们的整个应用程序在单个上下文中运行以及如何实现数据的缓存。 – 2012-08-12 17:13:38

相关问题