gpt4 book ai didi

android - 如何在启动新 Activity 时显示 ProgressDialog?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:27:49 25 4
gpt4 key购买 nike

目标:有一个显示“正在加载...”的 ProgressDialog,直到下一个 Activity 完全加载并显示在屏幕上。

尝试将 ProgressDialog 上下文和 Activity 设置为原始 Activity 。还尝试使用 getApplicationContext() 和 getParentContext()。最后两种方法的异常(exception)情况。需要这样做,因为目标 Activity 由于非简单的布局文件而呈现缓慢。 (由于组织问题,现在无法解决这个问题。)结果是目标 Activity 需要 1-2 秒才能 OnCreate,然后屏幕变黑长达 5 秒以上,然后进行绘制。渲染速度很慢。使用 Hierarchy Viewer 查看并看到很多红球,但现在无法修复。

阅读一些相关内容但尚未找到解决方法。例如。 What's the difference between the various methods to get a Context?

例如这两个都崩溃了。使用源 Activity 的“this”也不起作用。

// Context parentContext = this.getParent().getBaseContext();    
Context parentContext = this.getApplicationContext();
ProgressDialogMenuable theProgressDialog = new ProgressDialogMenuable(parentContext,this);
theProgressDialog.setTitle("yeeha");
theProgressDialog.setMessage("weewah");
theProgressDialog.setIndeterminate(true);
theProgressDialog.setCancelable(true);
theProgressDialog.show();

此外,奇怪的是,当我这样做时没有任何反应: theProgressDialog.show(); ActivityHelper.changeActivity(this, v, InsMyHoldingsActivity.class, extraMap, -1, -1);用户单击按钮以显示下一个 Activity ,但 ProgressDialog 与 Activity 启动发生冲突,除了按钮在触摸时变为黄色外,实际上没有发生任何事情。下面的按钮有效。删除 ProgressDialog 创建并且它有效。没有记录控制台消息。肯定会让开发人员有点反感。

最佳答案

你可以像这样显示一个进度对话框 -

定义这个

private ProgressDialog pd = null;

在你的 Activity 课上

把这个放在你的onCreate中(不要直接在这里设置ContentView)

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.pd = ProgressDialog.show(this, "Fancy App",
"Loading...Please wait...", true, false);
// Start a new thread that will download all the data
new IAmABackgroundTask().execute();

}

//后台繁重工作

class IAmABackgroundTask extends
AsyncTask<String, Integer, Boolean> {
@Override
protected void onPreExecute() {
// showDialog(AUTHORIZING_DIALOG);
}

@Override
protected void onPostExecute(Boolean result) {

// Pass the result data back to the main activity
ActivityName.this.data = result;

if (ActivityName.this.pd != null) {
ActivityName.this.pd.dismiss();
}

setContentView(R.layout.main);


}

@Override
protected Boolean doInBackground(String... params) {

//Do all your slow tasks here but dont set anything on UI
//ALL ui activities on the main thread

return true;

}

}

也通过这个:http://developer.android.com/training/improving-layouts/index.html 来优化布局性能。还可以使用 Traceview 查找瓶颈

关于android - 如何在启动新 Activity 时显示 ProgressDialog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13017122/

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