2

我正在尝试计算执行 AsyncTask 所用的时间,但 onPostExecute 方法没有登录任何内容,我做错了什么?

这是我的代码的一部分:

@Override
    protected void onPreExecute() 
    {
        this.dialog.setMessage(mensagem);
        this.dialog.show();
        Date date = new Date();
        startTime = date.getTime();
    }

@Override
    protected void onPostExecute(String result) 
    {

        if(this.dialog.isShowing() && this.dialog != null)
            this.dialog.dismiss();

        Date date = new Date();
        endTime = date.getTime();

        long diffTime = endTime - startTime;
//here nothing is logged in LogCat
        Log.d("TEMPO DE REQUISIÇÃO", String.valueOf(diffTime) + " milisegundos");
4

3 回答 3

2
long startTime, endTime; //declare this globally

@Override
protected void onPreExecute() 
{
     startTime = System.currentTimeMillis();
     ...
     ...
}

@Override
protected void onPostExecute(String result) 
{
    endTime= System.currentTimeMillis();
    System.out.println(endTime-startTime); //Milli Secs
    System.out.println((endTime-startTime)/1000); //Secs
     ...
     ...
}
于 2013-10-06T23:20:37.373 回答
1
  1. 检查 LogCat 级别,位于Debug.
  2. 确保您没有取消AsyncTask它正在运行的时间,否则onPostExecute将无法运行。
  3. 此外,如果它正在运行,则如果未运行,Service则可能存在Looper未设置的问题AsyncTask
  4. 尝试将“TEMPO DE REQUISIÇÃO”更改为“TEMPO DE REQUISICAO”,因为 LogCat 可能不支持字符编码。
于 2013-10-06T23:07:26.197 回答
-1

我解决了这个问题,只是去项目-> 清理,现在它正在工作。

于 2013-10-06T23:32:50.067 回答