adb logcat - 缺少日志

时间:2015-02-21 09:29:22

标签: android logging adb android-logcat

我对Android很新,我想了解活动生命周期。 Android开发者网站上的文档非常适用于此,但我希望看到生命周期的实际效果。

所以,我创建了一个新的简单项目,在主要活动中,我覆盖了方法onCreate()onDestroy()onStart()onStop()onResume()onPause()并为每一个添加一个日志语句。

然后,我启动模拟器并打开应用程序,更改方向,切换到另一个应用程序等等,然后查看日志语句以查看发生了什么。

我注意到奇怪的行为。例如:我第一次启动应用程序:

02-21 10:22:32.470 I/MainActivity( 2114): onCreate called.
02-21 10:22:32.520 I/MainActivity( 2114): onStart called.
02-21 10:22:32.520 I/MainActivity( 2114): onResume called.

这就是我的预期,很好。 然后,我打开 recents apps 切换器。

02-21 10:24:01.520 I/MainActivity( 2114): onPause called.
02-21 10:24:01.520 I/MainActivity( 2114): onStop called.

我切换回来:

02-21 10:24:26.050 I/MainActivity( 2114): onStart called.
02-21 10:24:26.050 I/MainActivity( 2114): onResume called.

到目前为止,这么好。然后,我再次打开应用程序切换器:

02-21 10:24:31.670 I/MainActivity( 2114): onStop called.

这里变得奇怪了。 onPause()在哪里?在我看来,在调用onStop()之前,必须调用此方法

这些日志消息是示例,有时行为略有不同,并不总是可预测的。但总是缺少一些日志声明。

我用Google搜索并发现了一些关于“旋转”日志的信息。我的问题是:我不明白为什么很难获得所有日志语句。期。也许存在一些技术障碍,但从开发人员的角度来看,在了解新的生态系统时,这只是令人沮丧。

我在这里遗漏了什么吗?是否有一个简单的解决方案来获取所有日志条目?

1 个答案:

答案 0 :(得分:0)

来自https://developer.android.com/reference/android/util/Log.html

  

提示:当您拨打电话时不要忘记

     

Log.v(TAG, "index=" + i);

     

当你构建字符串以传递给Log.d时,编译器   使用StringBuilder并且至少发生三次分配:   StringBuilder本身,缓冲区和String对象。   实际上,还有另一个缓冲区分配和复制,以及   对gc的压力更大。这意味着如果您的日志消息是   过滤掉了,你可能正在做重要的工作和招致   显着的开销。

来自:http://developer.android.com/tools/debugging/debugging-log.html#filteringOutput

  

每条Android日志消息都有一个标记和与之关联的优先级。

     
      
  • 日志消息的标记是一个短字符串,表示消息来自的系统组件(例如,“View”for   视图系统)。
  •   
  • 优先级是以下字符值之一,从最低优先级到最高优先级排序:      
        
    • V - 详细(最低优先级)
    •   
    • D - 调试
    •   
    • 我 - 信息
    •   
    • W - 警告
    •   
    • E - 错误
    •   
    • F - 致命
    •   
    • S - 无声(最高优先级,无需打印任何内容)
    •   
  •   

您可能需要查看: