我对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.这正是我所期望的,好吧。然后,我打开新的应用程序开关。
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()在哪里?在我看来,在调用之前,必须调用这个方法。
这些日志消息都是示例,有时其行为略有不同,而且并不总是可预测的。但是总是缺少一些日志语句。
我在谷歌上搜索了一下,发现了一些关于“旋转”日志的信息。我的问题是:我不明白为什么很难得到所有的日志语句。句号。也许存在一些技术障碍,但从开发人员的角度来看,在了解新的生态系统的同时,这是令人沮丧的。
我是不是漏掉了什么?是否有一个获取所有日志条目的简单解决方案?
发布于 2015-10-23 12:18:00
来自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日志消息都有一个标记和与其相关的优先级。
你可能想调查一下:
https://stackoverflow.com/questions/28644206
复制相似问题