目前我正在关注此事, 一旦我的应用程序启动,我就必须发送REST服务请求, 这需要很少的时间,所以我想到了加载屏幕,
在我的活动的onCreate()
中,首先要显示加载屏幕(进度对话框),
然后我使用AsyncTask启动后台活动,即请求REST服务和onPostexecute()
我关闭对话框然后我setContentView(myxml);
并更新UI。
这种方法可以改进吗?
我遇到的问题是,
有时,垃圾收集器可能会启动(由于各种原因)并且我的应用程序永远挂在加载屏幕上,因为垃圾收集器,甚至没有发送REST服务请求,因此有些唤醒呼叫来了,休息是灾难和力量关闭。
但有时甚至ForceClose也不会很快,可能是因为GC。所以我甚至无法回去加载屏幕。那时我能做的只是回到HOME。之后如果我回到我的应用程序仍然加载,所以这种方法肯定是一个糟糕的设计。什么是正确的方法?
答案 0 :(得分:1)
您可以像我done here
一样实施启动画面这基本上是启动一个异步任务,显示启动图像,在doInBackground()
第51行完成工作,然后转发到下一个活动。
答案 1 :(得分:1)
如果您希望REST调用花费大量时间,也许您还应该考虑使用服务而不是异步任务。为什么?因为在每次方向更改时,您的活动都将被销毁,并且将再次创建新的异步任务,因此从一开始就再次完成REST调用。另一方面,在使用服务时,您可以发出一次REST调用,并仅在活动中跟踪它的状态(这需要您正确处理onPause,onCreate函数)。
我怀疑你的问题与垃圾收集器有什么关系 - 在强制关闭后检查你的堆栈跟踪并尝试了解真正发生的事情。一定是你做错了什么......
答案 2 :(得分:0)
您是否观看了Google I / O 2010视频 - Android REST客户端应用程序? 在页面http://developer.android.com/videos/index.html