gpt4 book ai didi

android - 在gui之后在Android中加载代码

转载 作者:行者123 更新时间:2023-11-29 15:23:08 26 4
gpt4 key购买 nike

目前,当我开始我的一项 Activity 时,我希望它访问多个网页并从那里下载内容(包括大约 8000 行 Json)。所有这些代码都需要相当长的时间。目前代码都是这样。

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_loading_mods);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
getActionBar().setDisplayHomeAsUpEnabled(true);
}

// gets ad from google
AdView adView = (AdView) this.findViewById(R.id.ad);
adView.loadAd(new AdRequest());

// prepare for a progress bar dialog
bar = (ProgressBar) (this.findViewById(R.id.progressBar1));
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
bar.setMinimumWidth((width / 5 * 2));
bar.setMax(3);
bar.setVisibility(View.VISIBLE);

TextView text = (TextView) findViewById(R.id.toMods);
text.setText("Checking for updates...");

UpdateChecker update = new UpdateChecker();
update.execute(getBaseContext());

try
{
if (update.get() == true)
{
bar.setMax(5);
text.setText("Downloading update..");
UpdateMods updater = new UpdateMods();
updater.execute(getBaseContext());
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
catch (ExecutionException e)
{
e.printStackTrace();
}
}

现在的问题是,即使(据我所知)它是在 text.setText("Checking for updates...") 之后完成的,但要花很长时间才能让 Gui 显示出来但是,GUI 直到到达或超过 text.setText("Downloading update..") 行时才真正显示出来。当我搜索有关如何操作的更多信息时,我发现了这张图片: http://developer.android.com/images/activity_lifecycle.png

我很清楚我不希望它在 onCreate 中运行,因为获取 gui 需要很长时间。在 onStart 或 onResume 中也不行,因为我不希望它每次开始 Activity 时都下载 8000+ 行文件。

那么我应该在哪里运行这段代码呢? (UpdateChecker 和 UpdateMods 是 2 个 ASyncTasks)

最佳答案

你的问题在这里:

if (update.get() == true)

也就是说,实际上“阻塞主应用程序线程并卡住 UI,直到 doInBackground() 完成”。

摆脱那条线。相反,根据 AsyncTaskonPostExecute() 中的任务完成情况修改您的 UI。

关于android - 在gui之后在Android中加载代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16303050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com