Android 异步任务甚至没有启动

Android 异步任务甚至没有启动,android,android-asynctask,navigation-drawer,progressdialog,Android,Android Asynctask,Navigation Drawer,Progressdialog,我用AyncTask在一个代码上坐了5个小时,但运行不正常。我刚刚创建了另一个简单的活动(因为上一个onPostExecute()没有工作),现在这个简单的活动也没有启动异步任务。有人能看出我做错了什么吗 public class ServerStatus extends Activity { Context context; private ProgressDialog pd; int a; TextView test; @Override protecte

我用
AyncTask
在一个代码上坐了5个小时,但运行不正常。我刚刚创建了另一个简单的
活动
(因为上一个
onPostExecute()
没有工作),现在这个简单的
活动
也没有启动
异步任务
。有人能看出我做错了什么吗

public class ServerStatus extends Activity {
Context context;    
private ProgressDialog pd;  
int a;  
TextView test;  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.server_status);
        context=this;
        test=(TextView) findViewById(R.id.welcomemessage);
        new Download().execute();


    }

    public class Download extends AsyncTask<Void, Void, Void>{

        protected Void onPreExecute(Void... arg0) {
            pd = new ProgressDialog(context);
            pd.setTitle("Processing...");
            pd.setMessage("Please wait.");
            pd.setCancelable(false);
            pd.setIndeterminate(true);
            pd.show();
            return null;
        }


        @Override
        protected Void doInBackground(Void... arg0) {
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            a++;
            return null;
        }


        protected Void onPostExecute(Void... arg0) {
            if (pd!=null) 
                pd.dismiss();
            test.setText(a);
            return null;
        }

    } 

}
公共类服务器状态扩展活动{
语境;
私营部门;
INTA;
文本视图测试;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.server_状态);
上下文=这个;
test=(TextView)findViewById(R.id.welcomemessage);
新下载().execute();
}
公共类下载扩展异步任务{
受保护的Void onPreExecute(Void…arg0){
pd=新进度对话框(上下文);
pd.setTitle(“处理…”);
设置消息(“请稍候”);
pd.可设置可取消(假);
pd.SetUndeterminate(真);
pd.show();
返回null;
}
@凌驾
受保护的Void doInBackground(Void…arg0){
试一试{
《睡眠》(2000年);
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
a++;
返回null;
}
受保护的Void onPostExecute(Void…arg0){
如果(pd!=null)
pd.解散();
test.setText(a);
返回null;
}
} 
}

另外,
NavigationDrawer
是否阻止UI线程?因为我在实现时甚至无法更新
TextView

您需要在onPreExecute中更改代码

pd = new ProgressDialog(context);


这些方法不正确。你应该给它们添加
@Override
注释,这样它会在做错的时候对你大喊大叫

onPreExecute()
不接受任何
params
,因此它应该是

@Override
protected Void onPreExecute() {
还要将'onPostExecute()的参数类型更改为

删除“…”以获取解释

类声明中的那些参数用于
doInBackground()
onProgressUpdate()
,和
onPostExecute()


至于
NavDrawer
,我不确定您有什么问题。

类型ServerStatus的getActivity()方法未定义。下载抱歉,我以为您在处理片段,我的朋友,您应该在onProgressUpdate()中修改UI组件。导航抽屉不会阻止UI线程。当您尝试运行它时会发生什么情况?这是我的[对类似问题的回答][1][1]:嗯,我是从onPostExecute()更新UI线程的,所以可能是我的问题(它没有更新任何内容,甚至做任何类似于没有调用它的事情)。明天就试试吧。谢谢你的建议。你真的应该使用@Override注释。您的编译器会立即告诉您这个问题。似乎正在工作,但可能是我做错了什么,因为在将@Override添加到onPostExecute()后,它会说“ServerStatus.download类型的onPostExecute(Void…)方法必须重写或实现超类型方法”。也许我在争论中弄错了什么,但如果你或其他人能纠正我,我将不胜感激。5个小时后,我的思维不正常。。。
@Override
protected Void onPreExecute() {
@Override
 protected Void onPostExecute(Void arg0) {