我正在为Android编写一个应用程序,它应该在启动后立即从服务器获取一些数据。
在应用程序启动和服务器响应之间(或超时,如果服务器关闭),应用程序应显示“等待”动画。
此后,应显示正常面板(如果服务器响应)或显示错误对话框(如果服务器没有响应)。
将这种逻辑放入的正确位置是什么?
MainActivity.onCreate
或其他地方?
答案 0 :(得分:2)
如果您希望仅在应用首次启动时加载数据,onCreate()
是正确的位置。如果你想在每次应用程序聚焦时重新加载(即前景),那么onResume()
就是正确的位置。有关详细信息,请查看activity lifecycle上的文档。
您需要查看AsyncTask
或Loader
+ AsyncTaskLoader
,了解在后台执行操作的正确模式,然后使用结果更新UI。< / p>
答案 1 :(得分:1)
正如Jeffrey最初建议你必须确定何时连接到服务器?根据此情况,您应该在onCreate
或onResume
。
现在你必须记住一件事你不能在你的manin GUI线程中完成重要任务。否则ANR
很有可能。Thread
。因此,您必须在不同的线程中实现此功能。为此,您可以使用不同的Handler
,AsyncTask
或private 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}}
这只是建议结构。你也可以使用必要的参数或其他方法。