Android应用程序启动时的冗长操作

时间:2013-04-16 20:11:54

标签: android

我正在为Android编写一个应用程序,它应该在启动后立即从服务器获取一些数据。

在应用程序启动和服务器响应之间(或超时,如果服务器关闭),应用程序应显示“等待”动画。

此后,应显示正常面板(如果服务器响应)或显示错误对话框(如果服务器没有响应)。

将这种逻辑放入的正确位置是什么?

MainActivity.onCreate或其他地方?

2 个答案:

答案 0 :(得分:2)

如果您希望仅在应用首次启动时加载数据,onCreate()是正确的位置。如果你想在每次应用程序聚焦时重新加载(即前景),那么onResume()就是正确的位置。有关详细信息,请查看activity lifecycle上的文档。

您需要查看AsyncTaskLoader + AsyncTaskLoader,了解在后台执行操作的正确模式,然后使用结果更新UI。< / p>

答案 1 :(得分:1)

正如Jeffrey最初建议你必须确定何时连接到服务器?根据此情况,您应该在onCreateonResume

中连接到服务器

现在你必须记住一件事你不能在你的manin GUI线程中完成重要任务。否则ANR很有可能。Thread。因此,您必须在不同的线程中实现此功能。为此,您可以使用不同的HandlerAsyncTaskprivate class ServerCommunication extends AsyncTask<Void, Void, Void> { @Override protected void onPreExecute() { super.onPreExecute(); // show the connecting screen // or you can do this before calling asyncTask } @Override protected Void doInBackground(Void... params) { // communicate with server return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); // show the second screeen } } 。你可以找到一个很好的文档here

我认为使用AsyncTask是合适的情况。所以这是AsyncTask的一个例子

    ServerCommunication pcd = new ServerCommunication();
    pcd.execute();

并使用

调用它
{{1}}

这只是建议结构。你也可以使用必要的参数或其他方法。