我首先要说的是,我对android还很陌生,我刚刚读完一本介绍性的书,现在我必须实现我的第一个应用程序。
这个应用程序将被用来接受命令。在我要存储在本地数据库中的所有数据中,有两个表是最重要的:customers和article,后者是所有表中最大的(大约20000条记录)
我的应用程序的一个主要过程是,当用户按下启动设备日常操作的按钮时,获取我的应用程序脱机工作所需的所有数据。
这个过程包括以下步骤:
a.读取restful服务以检索客户数据
b.解析对json对象的响应
C.将这些客户插入客户表
d.读取restful服务以检索文章数据
e.解析对json对象的响应
f.将这些文章插入文章表
这就是我的计划:
编写一个处理所有http get请求的helper类。然后每当我需要下载所有客户和文章数据时调用这个类
因为所有这些过程可能需要很多时间,所以我需要在后台完成。因此根据一些建议,我将把所有这些代码放在绑定的服务中。
当所有这些长时间的处理都在后台进行时,我必须显示某种指示器(progressdialog),这就是我选择使用绑定服务的原因
尽管我认为我已经大致了解了如何将这些事情分开做,但我认为把所有事情放在一起是一个完全不同的故事。
所以我现在要把这些问题拼在一起:
您认为我执行所述过程的所有6个步骤的顺序正确/有效吗?如果你不得不做一些改变,你会改变什么?
如果启动服务的活动被显式取消或被另一个活动隐藏,则服务必须有一种方法让用户知道进程已完成。我怎么能实现?
是否可以/建议在服务中写入sqlite db?这和我在一个活动中这样做是一样的吗?
在j2me中,我做了一些类似的事情,当我放置类似于上面提到的6个步骤时,所有这些步骤都是按顺序执行的,也就是说,一个接一个地执行。安卓系统也是这样吗?
我希望我不要问太多问题。我只是把他们放在一起,因为他们都是亲戚。
基本上,在这个问题上,我并不是在要求工作代码(尽管如果你能提供一些示例代码就可以了),我真正想要的是一些建议,一些指导。比如“嘿,我想这可能有助于你的第3点”或“你可能会发现这篇文章有用”,“我认为你最好用这个代替那个”。那种事。
我决定来找你,因为你是专家,我真的需要有人帮我找到正确的方向。
非常感谢。
请不要结束这个问题,如果你认为我需要改变什么,只要让我知道,我会做的。
最佳答案
我决定来找你是因为你是专家
首先,你可以找到比我更多的专家,但这是我的观点。
首先,忘记使用i am not expert
来下载,因为它必须用于短的后台作业,而不是像您的后台作业我认为您要下载的文件量相当大。
查看google的i am not knowledgeable
查看它的工作原理,这可能会对您有所帮助。
http://developer.android.com/reference/android/app/DownloadManager.html
http://blog.vogella.com/2011/06/14/android-downloadmanager-example/
如果您想使用hope to give you some help
使用AsyncTask
是因为您不希望在用户关闭应用程序时服务被android或用户破坏,是吗?我想你想用任何方式得到你的数据。
为了提高效率,我建议采取以下步骤:
a.读取restful服务以检索客户数据
B.当你得到客户数据时:
创建另一个服务或线程以读取restful服务以检索项目数据
解析对旧服务或线程上json对象的响应
现在您有两个服务或线程同时运行,因此请在每个服务或线程上执行明显的步骤。
我为什么不把a和d结合起来呢?因为我觉得用户不喜欢在下载进度条后面等太久。
为了将数据插入数据库,请使用downloadmanager
,我建议您使用:
http://greendao-orm.com/
对于数据库来说,它比其他方法更有效,而且您可以从数据库实现中获得自由。
如果启动服务的活动被显式取消或被另一个活动隐藏,则服务必须有一种方法让用户知道进程已完成。我怎么能实现?
使用通知:
http://developer.android.com/training/notify-user/build-notification.html
http://www.tutorialspoint.com/android/android_notifications.htm
http://www.vogella.com/tutorials/AndroidNotifications/article.html
当所有这些长时间的处理都在后台进行时,我必须显示某种指示器(progressdialog),这就是我选择使用绑定服务的原因`
如何从未绑定的服务更新UI?`
使用service
,或通常使用unbound service
Android update activity UI from service
在j2me中,我做了一些类似的事情,当我放置类似于上面提到的6个步骤时,所有这些步骤都是按顺序执行的,也就是说,一个接一个地执行。安卓系统也是这样吗?
这取决于你的步骤,如果你遵循我的想法,你将运行insert
,如果你运行你的想法,你将运行parse
。
祝你好运。
关于android - 推荐的方式/顺序,从Web服务读取数据,解析该数据并将其插入SQLite数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25598696/