2011-12-01 65 views
1

在我的应用程序中,有时候可能需要很长时间才能加载一些值(例如从Google地图中检索行车路线)。这会导致启动“等待”警报对话框。我希望知道单击Force关闭按钮时会发生什么?我的意思是启用强制关闭时将运行什么代码?我们是否可以手动调整“等待”警报对话框出现的时间?如果不是这个对话框出现的默认时间是什么?Android:关闭后的活动周期

回答

2

我知道它有时可能很烦人,但他们几乎故意地(在我看来)确保程序员确保他们的应用程序顺利运行,没有UI冻结。 我现在无法找到它的文档,但如果我记得正确它的约4秒.. 你只需要确保没有UI冻结或延迟你的应用程序,这意味着如果你的值需要更多,然后加载几秒钟,他们应该加载异步。
您需要将主要活动中的任何重物从异步运行(使用async taskthread)。

+0

它主要发生在我试图从谷歌地图获取驾驶路线时! – freshDroid

+0

是的。任何在线数据拉应该异步发生。因为你不知道用户连接有多强,或者从服务器拉取数据需要多长时间,所以你不能让你的用户等待(冻结用户界面)等待数据..它必须在一个线程或异步任务,所以主要活动不会等待数据。即使您的应用需要一小时才能加载,只要您的主要活动未冻结即可。 – Joe

+0

我们是否可以管理强制关闭后启动的页面? – freshDroid

0

据我所知,当你进入该对话框时,Android操作系统已经接管并正在杀死你的进程。如果这是经常发生的事情,那么应该使用堆栈转储来确定哪些应用程序崩溃。

1

您应该在Android线程上阅读this article

你永远不想在你的主线程上执行任何长时间运行的任务。如果该操作需要超过几分之一秒的时间,则应该使用AsyncTask或创建自己的后台线程来执行任务。

0

您不应该在事件线程上进行耗时的初始化。你应该启动后台线程(或AsyncTask)来完成初始化工作。请参阅指导主题Designing for Responsiveness。后续阅读应包括Processes and ThreadsPainless Threading

+0

我们可以管理强制关闭后启动的页面吗? – freshDroid

+0

@freshDroid - 我不这么认为。操作系统已经接管并正在杀死你的应用程序。 –

+0

所以唯一的办法是避免所有发射力等待的情况? – freshDroid