读书人

急求!搞笑呢么~这个循环如何会退出呢

发布时间: 2012-05-23 13:44:13 作者: rapoo

急求!!搞笑呢么~这个循环怎么会退出呢~关于读取logcat日志的问题!困扰很久!
RT,怎么run里面的while函数会退出呢?str_all数组里只有200多个,然后str就成null了,然后就退出了~

Java code
public class holdon_listener extends PhoneStateListener {    @Override    public void onCallStateChanged(int state, String incomingNumber){        super.onCallStateChanged(state, incomingNumber);        if((state == TelephonyManager.CALL_STATE_OFFHOOK)&(firstcall)){            mhandler.postDelayed(mrun, 1000);            firstcall = false;        }        else if((state == TelephonyManager.CALL_STATE_IDLE)&(!(firstcall)))        {            firstcall = true;        }    }}private Handler mhandler = new Handler();private Runnable mrun = new Runnable(){    @SuppressWarnings("null")    @Override    public void run() {        // TODO Auto-generated method stub        System.out.println("--------func start--------"); // 方法启动         try         {            ArrayList<String> cmdLine=new ArrayList<String>();   //设置命令   logcat -d 读取日志            cmdLine.add("logcat");            cmdLine.add("-d");                        ArrayList<String> clearLog=new ArrayList<String>();  //设置命令  logcat -c 清除日志            clearLog.add("logcat");            clearLog.add("-c");                        Process process=Runtime.getRuntime().exec(cmdLine.toArray(new String[cmdLine.size()]));   //捕获日志            BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(process.getInputStream()));    //将捕            String str = "";            String str_all[] = new String [1000];            int ii = 0;            while((str = bufferedReader.readLine())!=null)            {                Runtime.getRuntime().exec(clearLog.toArray(new String[clearLog.size()]));                 str_all[ii] = str;                if(str==null)                {                    System.out.println("--   is null   --");                }                ii++;            }            ii = ii +1;        } catch (IOException e)         {            e.printStackTrace();            System.out.println("--------str wrong--------");        }        System.out.println("--------func end--------");    }


[解决办法]
从日志中读入数据,可是调用清除日志功能,日志都清掉了,难道不应该为null吗?
[解决办法]
logcat -d 读取所有log后退出,读取的日志也是一次性的,就算没有运行logcat -c清除日志,bufferedReader.readLine每次读一行,也总有读到结尾结束的时候。

建议手机连到电脑上,看Eclipse输出的日志数量与你程序中统计ii的数量是否相同。
[解决办法]
你只读了一次日志,Eclipse新输出的日志又没有读入

读书人网 >Android

热点推荐