LifecykleLog
Library to easily log out Android lifecycle methods for Activities and Fragments.
Installation
Gradle - add the following line to your build.gradle
implementation 'com.chesire:lifecyklelog:{version}'Usage example
Initialize in your application class.
class ApplicationOverride : Application() {
override fun onCreate() {
super.onCreate()
LifecykleLog.initialize(this)
}
}Add the @LogLifecykle annotation to the Activity or Fragment that the lifecycle methods should be logged for.
@LogLifecykle
class MainActivity : AppCompatActivity() { ...
@LogLifecykle
class MainFragment : Fragment() { ...Then lifecycle events will be logged out in logcat.
D/Lifecykle: MainActivity ⇀ onStart
D/Lifecykle: MainFragment ⇀ onAttach
D/Lifecykle: MainFragment ⇀ onCreate
D/Lifecykle: MainFragment ⇀ onCreateView
D/Lifecykle: MainFragment ⇀ onActivityCreated
D/Lifecykle: MainFragment ⇀ onStart
D/Lifecykle: MainActivity ⇀ onResume
D/Lifecykle: MainFragment ⇀ onResume
D/Lifecykle: MainActivity ⇀ onPause
D/Lifecykle: MainFragment ⇀ onPause
D/Lifecykle: MainActivity ⇀ onStop
D/Lifecykle: MainFragment ⇀ onStop
Configuration
Logging mechanism
By default LogLifecykle will output to Log.d with a tag of Lifecykle, to override this behaviour pass an implementation into the LifecykleLog.logHandler.
LifecykleLog.logHandler = LogHandler { clazz, lifecycleEvent, bundle ->
Log.e(clazz, lifecycleEvent)
}This can allow you to use other logging frameworks such as Timber.
LifecykleLog.logHandler = LogHandler { clazz, lifecycleEvent, bundle ->
Timber.i("$clazz -> $lifecycleEvent - $bundle")
}Lifecycle methods
To customise which lifecycle methods are logged out, an array of the LifecycleEvent enum can be passed into LifecykleLog.logEvents, this can also be done with the @LogLifecykle annotation.
LifecykleLog.logEvents = arrayOf(
LifecycleEvent.ON_CREATE,
LifecycleEvent.ON_DESTROY
)
@LogLifecykle(overrideLogEvents = [LifecycleEvent.ON_START])
class MainActivity : AppCompatActivity() {
@LogLifecykle(overrideLogEvents = [LifecycleEvent.ON_ACTIVITY_CREATED, LifecycleEvent.ON_ATTACH])
class MainFragment : Fragment() {If logEvents is provided to the LifecykleLog then it will override the defaults.
If overrideLogEvents is provided on the annotation, only the methods that are provided in this will be logged out.
Class name
To customise the class name that is logged out, a new name can be provided to the annotation.
@LogLifecykle(className = "MainActivity")
class MainActivity : AppCompatActivity() {
@LogLifecykle(className = "MaybeMainFragment")
class MainFragment : Fragment() {This can be useful if ProGuard strips out the class names and you really need to see them in the logs. By default the name will be pulled from the objects class.java.simpleName.
Bundle
For lifecycle methods which pass a bundle along, it will automatically be pushed through the interface. In instances where there is no bundle, or it is empty, then the value will simply be "null".
For more examples and usage, please refer to the sample.
Contributing
Please read CONTRIBUTING.md for details on how to contribute.
License
Apache 2.0 - See LICENSE for more information.

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
