gpt4 book ai didi

android - AsyncTask 问题

转载 作者:行者123 更新时间:2023-11-29 18:10:04 25 4
gpt4 key购买 nike

我的 AsyncTask 中有以下代码。我想让 AsyncTask 做的唯一一件事就是休眠 1000 毫秒,同时显示 ProgressDialog。

package something.something.Logic;

import android.R;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class DeviceScan extends AsyncTask<String, Void, String> {

ProgressDialog dialog;
Context _context;

public DeviceScan(Context context) {
_context = context;
dialog = new ProgressDialog(_context);
}

protected void onPreExecute() {

dialog = new ProgressDialog(_context);
dialog.setTitle("Please Wait");
dialog.setMessage("Searching for devices..");
dialog.setIndeterminate(true);
dialog.setCancelable(false);
dialog.show();
}

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

for(int i=0;i<5;i++) {

try {
Thread.sleep(1000);

} catch (InterruptedException e) {
e.printStackTrace();
}
}

return "";
}

protected void onPostExecute(Integer result) {

/*
* When the background thread is finished, do something here
*/
Toast.makeText(_context, "Done!!", Toast.LENGTH_LONG).show();
dialog.dismiss();
}
}

然后我这样调用 AsyncTask:

import something.something.Logic.*;

public void onClick(View view){

switch(view.getId()) {

case R.id.button1:
new DeviceScan(getApplicationContext()).execute("");
break;

}
}

但是当我点击按钮时我的应用程序崩溃了,我无法从调试器中找到任何信息。谁能给我一个提示?

提前致谢。

最佳答案

您正在创建 ProgressDialog 两次。从 onPreExecute 中删除创建。另一件事是,将 Activitythis 引用作为 DeviceScan 的构造函数中的 context 传递。 p>

import something.something.Logic.*;

public void onClick(View view){

switch(view.getId()) {

case R.id.button1:
new DeviceScan(MyActivity.this).execute("");
break;

}
}

此外,根据其他答案的建议更改 onPostExecute 的签名。

关于android - AsyncTask 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11205547/

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