小编典典

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

all

我想在控制台中打印一些东西,以便我可以调试它。但由于某种原因,我的 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");
    }

阅读 61

收藏
2022-07-07

共1个答案

小编典典

更正:

在模拟器上,大多数设备System.out.println被重定向到 LogCat 并使用Log.i(). 在非常旧的或自定义的 Android
版本上,这可能不是真的。

原来的:

没有将消息发送到的控制台,因此System.out.println消息会丢失。同样,当您使用javaw.

相反,您可以使用AndroidLog

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

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

adb logcat

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

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

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

Log对应以下级别有五种单字母方法:

  • e()- 错误
  • w()- 警告
  • i()- 信息
  • d()- 调试
  • v()- 详细
  • wtf()- 多么可怕的失败

文档对级别进行了以下说明

除非在开发期间,否则永远不应将详细信息编译到应用程序中。调试日志被编译,但在运行时被剥离。始终保留错误、警告和信息日志。

2022-07-07