1

目前这是我正在关注的,一旦我的应用程序启动,我必须发送一个对 REST 服务的请求,这将花费很少的时间,所以我想到了显示加载屏幕,

onCreate()我的 Activity 中,首先要显示加载屏幕(进度对话框),然后我使用 AsyncTask 启动后台 Activity,即请求 REST 服务并onPostexecute()关闭对话框,然后执行setContentView(myxml);并更新 UI。

这种方法可以改进吗?

我面临的问题是,

有时,垃圾收集器可能会启动(由于各种原因)并且我的应用程序永远挂在加载屏幕上,因为垃圾收集器,甚至没有发送对 REST 服务的请求,因此一些唤醒呼叫来了,休息是灾难和强制关闭.

但有时甚至 ForceClose 也不会来得很快,可能是因为 GC。所以我什至无法返回并停留在加载屏幕中。那时我唯一能做的就是回家。之后,如果我回到我的应用程序,它仍然在加载,所以这种方法肯定是一个糟糕的设计。什么是正确的方法?

4

3 回答 3

1

如果您预计您的 REST 调用会花费大量时间,也许您还应该考虑使用服务而不是异步任务。为什么?因为在每次方向更改时,您的活动都将被销毁,并且将再次创建新的异步任务,因此 REST 调用从一开始就再次完成。另一方面,在使用服务时,您可以发出一次 REST 调用,并且只跟踪它在活动中的状态(这需要您正确处理 onPause、onCreate 函数)。

我怀疑您的问题与垃圾收集器有关 - 在强制关闭后检查您的堆栈跟踪并尝试了解实际发生的情况。一定是你做错了什么...

于 2011-02-18T07:47:41.770 回答
1

您可以像我在这里所做的那样实现启动画面

这基本上是启动一个显示启动图像的异步任务,完成doInBackground()第 51 行的工作)然后转发到下一个活动。

于 2011-02-18T07:25:19.160 回答
0

您是否观看过 Google I/O 2010 - Android REST 客户端应用程序视频?在页面http://developer.android.com/videos/index.html

于 2011-02-18T07:23:55.340 回答