我想在控制台中打印一些内容,以便对其进行调试。但是由于某种原因,我的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"); }
在仿真器上,大多数设备System.out.println都重定向到LogCat并使用进行打印Log.i()。在非常旧的或自定义的Android版本上可能并非如此。
System.out.println
Log.i()
原版的:
没有控制台将消息发送到,因此System.out.println消息丢失。当你使用来运行“传统” Java应用程序时,也会以同样的方式发生这种情况javaw。
javaw
相反,你可以使用Android Log类:
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()