2011-03-03 61 views
3

爲了我(當前)的理解,Android沒有控制檯發送消息,因此System.out.println消息丟失。應該使用Log.x(輸出到LogCat)。Pro Android 2:Android中的system.out.println是什麼?

然而,在廣受好評的Android臨書2,listing 8-1少了點是:

in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 

    StringBuffer sb = new StringBuffer(""); 
    String line = ""; 
    String NL = System.getProperty("line.separator"); 
    while ((line = in.readLine()) != null) { 
     sb.append(line + NL); 
    } 
    in.close(); 

    String page = sb.toString(); 
    System.out.println(page); 

是否的System.out.println真的在Android中運行還是隻是一個錯字?

如果前者(即不是一個錯字),它究竟做了什麼以及我應該在哪裏找到輸出?

回答

1

android docs

缺省情況下,Android系統發送輸出和錯誤(System.out和System.err的)輸出到/ dev/null的。

它還解釋瞭如何正確使用System.out和System.err。

+0

它實際上工作(默認情況下,沒有任何修改設置)。請參閱下面的答案。 – 2011-03-03 01:36:38

3

System.out.println打印到當前定義爲「標準」輸出PrintStream的任何內容。可以將其掛鉤指向日誌流,但實際上沒有充分理由使用它。使用Log.x.

這可能只是書中的一個錯字。該代碼片段中沒有任何內容是Android特定的。

+1

是的,我會投票「從一個普通的Java書中複製的代碼,只需進行最少的調整即可使其在Android上工作。」 – EboMike 2011-03-03 00:19:01

+0

@EboMike上述書*是*一本Android書。 :) @梅拉謝謝。 – 2011-03-03 00:21:11

+3

@Android:是的,但作者可能從別的地方得到了這段代碼,併爲Android進行了調整。我們有16年的Java代碼片段在世界各地飛行,我相信有一些可以使用的東西。那個,或者其他人都是Java專家,但是對於Android來說還是比較新的。 – EboMike 2011-03-03 00:22:37

2

System.out.println代碼確實有效(儘管android文檔中提到了這一點)。我已經在我的Android開發設置中嘗試過了(不需要按照他們在文檔中描述的那樣更改設置)。我已經嘗試了我的Android編程學生的設置,無論是在Windows還是Mac上。它總是以相同的方式出現:

默認情況下,以下行會輸出到logcat。

System.out.println(「blah blah」);

現在當然,最好是堅持使用Log.x()。依靠無證的功能可能不是一個好主意,特別是在書中。這個功能今天可以在這裏,並且在下次更新工具的時候也一樣。

+0

文檔(如上所述)是錯誤的,發現文檔錯誤並不罕見,請查看這個錯誤報告,說明默認行爲已被修改:http:// code。 google.com/p/android/issues/detail?id=92 – 2011-03-09 02:06:59

0

如果您使用的是Eclipse,System.out將顯示在LogCat選項卡上而不是控制檯中。 您也可以嘗試Log.i(「MyLog」,「這裏的消息....」);也顯示在LogCat上。

享受!