【发布时间】:2014-02-25 19:51:40
【问题描述】:
我正在创建一个移动应用程序,它使用 AsyncTask 从远程数据库更新本地数据库。这工作正常,除了视图(微调器和表数据)依赖于本地数据库中的数据。如果在 asynctask 的初始运行后没问题,但第一次加载时屏幕是空白的。
我有:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences sp = getSharedPreferences("***", 0);
boolean initalSync = sp.getBoolean("***.android.db.inital", false);
if(initalSync==false){
AsyncTaskRunner backgroundTask = new AsyncTaskRunner(this);
backgroundTask.execute();
}
因为从远程数据库更新本地数据库是后台任务,如果 initalsync Boolean 为 false 则执行。
片段基于本地数据库显示信息,是默认/启动视图。
我目前通过运行来保护它
if(initalSync==true){
// DISPLAY TABLE OF DATA
}
我知道我不能“暂停”线程,也不能在 onPostExecute 中显示本地表数据,因为我会在其他时间更新数据库。
我基本上希望显示一个进度条并等待异步任务完成,然后让其余代码运行
有什么想法吗?
【问题讨论】:
-
是的,你等不及了,你需要展示一些东西,而你没有其他东西可以展示。进度条是个好主意。我没有看到的是,你这样做的问题在哪里。
标签: android sqlite android-asynctask background-process