gpt4 book ai didi

android - 应用查询服务器时需要显示加载屏幕

转载 作者:太空宇宙 更新时间:2023-11-03 12:42:27 26 4
gpt4 key购买 nike

在此应用中,用户登录并根据服务器检查他们的凭据。

用户可能会等待几秒钟,具体取决于手机打开数据连接的速度(如果有的话)。在用户单击登录后,我需要对话框说“请稍候”或“验证凭据”或类似的长行。

所需的视觉顺序:按登录 -> 在同一 Activity 中显示“请稍候”对话框 -> 当结果从服务器返回时,加载新 Activity (或抛出错误)

当前的视觉顺序:按下登录 -> 用户等待,就好像应用已卡住 -> 新 Activity 已加载

我正在尝试使用 AsyncTask 执行此线程操作,但我现在没有得到它!

class Progressor extends AsyncTask<Void, Void, Void> {

ProgressDialog dialog;
protected void onPreExecute(){
dialog = ProgressDialog.show(Login.this, "Logging In",
"Verifying Credentials, Please wait...", true);
}

然后在我的 oncreate 方法中,我有所有其他逻辑,例如用户单击按钮和其他东西,但我已经将其移动到 AsyncTask 方法的 doInBackGround 函数中

  /* When the Login Button is clicked: */
Button loginButton = (Button) findViewById(R.id.loginButton);
loginButton.setOnClickListener(new OnClickListener() {


public void onClick(View v) {

Progressor showMe = new Progressor();
showMe.onPreExecute();
showMe.doInBackground(null);
showMe.onPostExecute();

onPostExecute 只是关闭对话框

为什么这行不通,应该如何重新安排。我应该将什么变量传递给 showMe.doInBackGround() 函数,它是无效的。在调试中它永远不会进入这里

    @Override
protected Void doInBackground(Void... arg0) {

最佳答案

不要手动调用 AsyncTask 的 onPreExecute/doInBackground 方法;只需在其上调用 execute(),它就会在正确的位置从正确的线程调用您的所有方法。它违背了异步任务从 UI 线程同步调用其所有方法的全部目的(您的示例代码就是这样做的)。

关于android - 应用查询服务器时需要显示加载屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5554077/

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