Эта ошибка относится к обобщенному c Context
, поскольку Context
может быть любым кратковременным компонентом, таким как действие или служба. Это не даст вам ошибку для Application
, потому что приложение живет в течение всей жизни вашего приложения. И поскольку Application
является Context
, вы можете использовать его практически для всего, для чего вы будете использовать Context
, поэтому вы можете изменить тип переменной на Application
, чтобы избежать предупреждения и предотвратить риск любые утечки.
Так что сделайте lateinit var
в Application
и сделайте Application
тип аргумента для getInstance()
.
Классы Activity
, Service
и AndroidViewModel
у всех есть application
свойства, которые вы можете использовать для передачи в вашу getInstance()
функцию.
Но кроме того, чтобы избежать предупреждения Lint, было бы целесообразно, чтобы конструктор AndroidFileUtil2
также использовал Application
вместо Context
, так как это синглтон. Lint не достаточно сложен, чтобы идентифицировать это и предупредить вас об этом, но, как он определен сейчас, ссылка AndroidFileUtil2
stati c имеет такой же риск вызвать утечку, как и ссылка stati c generi c Context
ссылка.