Android 异步任务中的doInBackground进程不';行不通
我有执行AsyncTask来调用API的代码,但是当我试着调试它时,什么也没有发生。指针从onPreExecute退出,而不进入doInBackground。我不知道为什么Android 异步任务中的doInBackground进程不';行不通,android,android-asynctask,Android,Android Asynctask,我有执行AsyncTask来调用API的代码,但是当我试着调试它时,什么也没有发生。指针从onPreExecute退出,而不进入doInBackground。我不知道为什么 class MasterBrand extends AsyncTask<String, String, AsyncTaskResult<ResponBrand>> { private ProgressDialog dialog; @Override protected void
class MasterBrand extends AsyncTask<String, String, AsyncTaskResult<ResponBrand>> {
private ProgressDialog dialog;
@Override
protected void onPostExecute(AsyncTaskResult<ResponBrand> s) {
Log.e("", "CollectionResult.onPostExecute");
try{
if (dialog.isShowing()) {
dialog.dismiss();
}
}catch (Exception e){
}
if (dialog.isShowing()) {
dialog.dismiss();
}
}
@Override
protected void onPreExecute() {
super.onPreExecute();
Log.e("", "CmoProductivity.onPreExecute");
dialog = new ProgressDialog(getActivity());
dialog.setCancelable(false);
dialog.setMessage("harap tunggu sebentar...");
dialog.show();
}
@Override
protected AsyncTaskResult<ResponBrand> doInBackground(String... params) {
ResponBrand cmoPoDp = new ResponBrand();
try
{
Type listTypeTaskHeader = new TypeToken<ResponBrand>() {}.getType();
JSONHttpClient jsonHttpClient = new JSONHttpClient();
List<NameValuePair> argsTaskHeader = new ArrayList<NameValuePair>();
Log.e("", "Get Task Header Data");
cmoPoDp = jsonHttpClient.Get(StringAPIurl, argsTaskHeader, ResponBrand.class);
}
catch (Exception e) {
if (dialog.isShowing()) {
dialog.dismiss();
}
Log.e("", e.getMessage());
e.printStackTrace();
}
return new AsyncTaskResult<ResponBrand>(cmoPoDp);
}
}
class MasterBrand扩展任务{
私人对话;
@凌驾
受保护的void onPostExecute(AsyncTaskResult){
Log.e(“,”CollectionResult.onPostExecute”);
试一试{
if(dialog.isShowing()){
dialog.dismise();
}
}捕获(例外e){
}
if(dialog.isShowing()){
dialog.dismise();
}
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
Log.e(“,”CmoProductivity.onPreExecute”);
dialog=newprogressdialog(getActivity());
对话框。可设置可取消(false);
设置消息(“harap tunggu sebentar…”);
dialog.show();
}
@凌驾
受保护的AsyncTaskResult doInBackground(字符串…参数){
ResponBrand cmoPoDp=新ResponBrand();
尝试
{
类型listTypeTaskHeader=newTypeToken(){}.getType();
JSONHttpClient JSONHttpClient=新的JSONHttpClient();
List argsTaskHeader=new ArrayList();
Log.e(“,“获取任务头数据”);
cmoPoDp=jsonHttpClient.Get(stringapirl、argsTaskHeader、ResponBrand.class);
}
捕获(例外e){
if(dialog.isShowing()){
dialog.dismise();
}
Log.e(“,e.getMessage());
e、 printStackTrace();
}
返回新的AsyncTaskResult(cmoPoDp);
}
}
我怎样才能解决这个问题?你怎么称呼它?添加调用代码。。还可以查看是否有任何异常,并添加错误日志。还可以从
doInBackground
中删除dialog.isShowing()
code。这就是我称之为new MasterBrand.execute()的方式,但当我调试指针从onPreExecute退出时,它应该转到doInBackground。但在这种情况下,它会在showdialog之后从onPreExecute退出,而不会关闭它,它应该是新的MasterBrand()。执行(“”)。你是这样叫的吗?如果你也能加上呼叫部分,那会有帮助的。并检查添加到doInBacakground中的日志是否被记录。