ExampleApplication.kt
TLDR
The ExampleApplication
class is a subclass of Application
and enables strict mode in the Android application. It also keeps track of leaked views, dialogs, and services.
Classes
ExampleApplication
The ExampleApplication
class is a subclass of the Application
class in Android. It enables strict mode by setting a thread policy that detects all violations, logs them, and causes the application to crash. It also maintains three mutable lists: leakedViews
, leakedDialogs
, and leakedServices
. These lists are used to keep track of any views, dialogs, or services that are leaked during the application's lifecycle.
/*
* Copyright (C) 2015 Square, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.example.leakcanary
import android.app.Application
import android.app.Dialog
import android.app.Service
import android.os.StrictMode
import android.view.View
open class ExampleApplication : Application() {
val leakedViews = mutableListOf<View>()
val leakedDialogs = mutableListOf<Dialog>()
val leakedServices = mutableListOf<Service>()
override fun onCreate() {
super.onCreate()
enabledStrictMode()
}
private fun enabledStrictMode() {
StrictMode.setThreadPolicy(
StrictMode.ThreadPolicy.Builder()
.detectAll()
.penaltyLog()
.penaltyDeath()
.build()
)
}
}