为什么“ System.out.println”在Android中不起作用?

发布于 2021-02-02 23:02:15

我想在控制台中打印一些内容,以便对其进行调试。但是由于某种原因,我的Android应用程序中没有任何内容。

那我该如何调试呢?

public class HelloWebview extends Activity {
    WebView webview;    
    private static final String LOG_TAG = "WebViewDemo";
    private class HelloWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        webview = (WebView) findViewById(R.id.webview);
        webview.setWebViewClient(new HelloWebViewClient());
        webview.getSettings().setJavaScriptEnabled(true);
        webview.setWebChromeClient(new MyWebChromeClient());
        webview.loadUrl("http://example.com/");    
        System.out.println("I am here");
    }
关注者
0
被浏览
718
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    在仿真器上,大多数设备System.out.println都重定向到LogCat并使用进行打印Log.i()。在非常旧的或自定义的Android版本上可能并非如此。

    原版的:

    没有控制台将消息发送到,因此System.out.println消息丢失。当你使用来运行“传统” Java应用程序时,也会以同样的方式发生这种情况javaw

    相反,你可以使用Android Log类:

    Log.d("MyApp","I am here");
    

    然后,你可以在Eclipse 的Logcat视图中查看日志,也可以通过运行以下命令来查看日志:

    adb logcat
    

    养成查看logcat输出的习惯是一件好事,因为这也是显示任何未捕获的异常的堆栈跟踪的地方。

    55.png

    每个日志记录调用的第一个条目是日志标记,用于标识日志消息的来源。这很有用,因为你可以过滤日志的输出以仅显示你的消息。为了确保你与日志标签一致,最好将它一次定义为static final String某个地方。

    Log.d(MyActivity.LOG_TAG,"Application started");
    

    有五个单字母方法分别Log对应于以下级别:

    • e() - Error
    • w() - Warning
    • i() - Information
    • d() - Debug
    • v() - Verbose
    • wtf() - What a Terrible Failure


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看