在MainActivity启动之前从WEB加载值

时间:2014-10-13 15:40:43

标签: java android android-asynctask

我的应用已使用自动填充功能进行搜索。

现在我有了这些:

1)AsyncTask类,它加载Dictionary并将其保存在文件中以保存到InternalStorage(我需要它在网络不可用时使用预加载的项目。)

2)覆盖onCreate方法的应用程序类。在这里我执行AsyncTask(1)。

问题是带有搜索字段的MainActivity在AsyncTask完成之前启动,因此自动完成加载了非相关(旧)字典。

我需要完成我的AsyncTask 不早于 MainActivity从内部存储加载字典文件。

我怎样才能做到这一点? 谢谢你的回答。

upd:好的,有代码:

package com.XXX.XXX.app;

import android.app.Application;

public class MyApp extends Application {
    @Override
    public void onCreate()
    {
        super.onCreate();
        if (CheckNetworkConnect.check(MyApp.this)) {
            LoadData getData = new LoadData(MyApp.this);
            getData.execute();
        }
    }
}

之后,我使用自己的InternalStorage类从内部存储加载MainActivity 类中的文件

try {
        acList = (ArrayList<String>) InternalStorage.readObject(MainActivity.this, "aclist");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        acList = new ArrayList<String>(Arrays.asList("NO FILE"));
        e.printStackTrace();
    }

然后将getted ArrayList应用于下拉列表

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            R.layout.dropdown_item, acList);
    AutoCompleteTextView textView = (AutoCompleteTextView)
            findViewById(R.id.searchFiled);
    searchFiled.setAdapter(adapter);

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您可以在设置搜索字段之前在MainActivity onCreate中加载Dictionary。或者您可以通过调用AsyncTaskClass.execute()来获取AsyncTask结束.get(),检查http://developer.android.com/reference/android/os/AsyncTask.html

答案 1 :(得分:0)

你没有太多选择,你必须等待你的任务完成。否则,正如您所提到的那样,将使用旧的,不相关的数据。

  1. 您可以使用theTask.get()等待您的活动完成任务,使用ProgressDialog或检查其状态theTask.getStatus()(任务必须具有活动的可见性) )

  2. 您可以在活动中启动任务,也可以使用progressDialog,并在OnPostExecute部分填写acList

  3. 您可以制作启动画面活动,加载数据的角色,一旦完成,将启动MainActivity