0

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

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

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

把这个逻辑放在什么地方?

MainActivity.onCreate还是其他地方?

4

2 回答 2

2

如果您希望仅在应用程序第一次启动时加载数据,那么onCreate()是正确的地方。如果您想在每次应用程序成为焦点(即前景)时重新加载,那么onResume()就是正确的位置。查看有关活动生命周期的文档以获取详细信息。

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

于 2013-04-16T20:17:16.397 回答
1

正如杰弗里最初建议的那样,您必须确定何时要连接到服务器?根据这一点,您应该在onCreate或中连接到服务器onResume

现在您必须记住一件事,您不能在 manin GUI 线程中执行繁重的任务。否则很有可能ANR。所以你必须在不同的线程中实现这个特性。为此,您可以使用不同ThreadHandlerAsyncTask你可以在这里找到一个不错的文档

我认为使用 AsyncTask 是一个合适的情况。所以这是一个 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
    }

}

并使用

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

这只是为了建议结构。您绝对可以使用必要的参数或其他方法。

于 2013-04-17T02:21:48.857 回答