【问题标题】:How to log a method in android?如何在android中记录一个方法?
【发布时间】:2012-03-07 13:24:22
【问题描述】:

我试图在下面的 Asyncktask 类中查看我的 publishProgress() 调用日志。看看它是否真的在计算任何东西。就目前而言,我有一个没有更新的进度对话。

 public String strAttachedFile = "";
 public float nTotalSize;
 public float nUploadSize;
public void Send(){

        new Loadvid().execute(); // our call for asynctask
    }

public class Loadvid extends AsyncTask <String,Integer,String>{

            protected void onPreExecute(){
            m_vwProgress.setMax((int)nTotalSize);
            m_vwProgress.setMessage("Uploading, Please wait...");
            m_vwProgress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                m_vwProgress.show();
            }
        }

protected String doInBackground(String... params) {


            boolean m_bSuccess = true; 
            try
            {

                MultipartEntity me = new MultipartEntity();

                File pFp = new File(strAttachedFile);
                me.addPart("videoFile", new FileBody(pFp, "video/3gpp"));
                httppost.setEntity(me);
                // get the total size of the file
                nTotalSize = pFp.length();

                HttpResponse responsePOST = client.execute(httppost);  
                HttpEntity resEntity = responsePOST.getEntity(); 

                InputStream inputstream = resEntity.getContent();
                StringBuilder stringbuilder = new StringBuilder();
                byte data [] = new byte[512]; 

                while ((len = inputstream.read(data))>0 )
                {
                    StringBuilder result= stringbuilder.append(new String(data, 0, len)); 
                     String s = String.valueOf(result);
                     nUploadSize += len;
                     publishProgress((float)(nTotalSize/nUploadSize));
                      String myString1 = Float.toString((int)nUploadSize);
                     String myString2 = Float.toString((int) nTotalSize);

                     Log.i("Upload SIZEEEEEEEE", myString1);
                     Log.i("Total SIZEEEEEEEE", myString2);

                }
                inputstream.close();

            }catch (Exception e) {
                e.printStackTrace();
                m_bSuccess = false; 
            }

            if(m_bSuccess){
                return "success";//Success

            }

            return null;//failed
        }

protected void onProgressUpdate(Integer... values) {

            if(m_vwProgress !=null){

                m_vwProgress.setProgress(values[0]);
                }
        }


        protected void onPostExecute(String result){

            super.onPostExecute(result);

            if(result==null){
                // failed
                if(m_vwProgress !=null)
                    m_vwProgress.dismiss();

                return;
            }
            else
            {
                //success
                if(m_vwProgress !=null)
                    m_vwProgress.dismiss();
            }
        }

【问题讨论】:

  • 就像您正在做的那样:致电Log.&lt;level&gt;(tag, message);。然后该消息应显示在LogCat 窗口中。如果不是,您要么没有进入该方法调用,要么message-参数为空。
  • @Jave 如果我添加这个:Log.i("Show progresssss", "publishProgress()");它给了我一个错误并且不会运行。这就是为什么我想弄清楚如何显示 publishProgress()。顺便谢谢你的回答

标签: android android-asynctask logging


【解决方案1】:

尝试匹配publishProgressonProgressUpdate参数之间的变量类型

protected void onProgressUpdate(float... values)

publishProgress((Integer)(nTotalSize/nUploadSize)*100); 

【讨论】:

  • 这假设除数和被除数之一是浮点数。如果它们都是整数,那么这仍然会计算 0。浮点转换需要在其中一个数字上。
  • 从它们的名字来看,它们是文件大小,所以它们大于1,所以不会计算为零。
  • 我想要做的是上传一个视频文件。对于 nTotalsize 数字的日志,它通常以 100000 字节为单位,但上传大小通常为 120。这是尝试上传 1 秒的视频。我仍然没有任何进展可以展示。顺便说一句,我在 android dev 还很新。谢谢
  • 我的意思是如果它们都是整数,那么这仍然是整数除法,它将返回一个整数。此外,除法中的变量应该是相反的。
  • @user875139 我明白了,所以你需要减少进度。尝试在 m_vwProgress.incrementProgressBy(values[0]) 之前使用 m_vwProgress.setMax(nTotalSize);
猜你喜欢
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-20
  • 1970-01-01
  • 2021-08-05
  • 2019-06-23
  • 1970-01-01
相关资源
最近更新 更多