生命周期 OnLifecycleEvent 已弃用
Lifecycle OnLifecycleEvent is deprecated
将 lifecycle
库更新到 2.4.0 后 Android studio 将所有生命周期事件标记为已弃用。
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun create() {
tts = TextToSpeech(context, this)
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun stopTTS() {
tts?.stop()
}
是否有任何等效的替代品,例如DefaultLifecycleObserver
?
它已被弃用,因为他们现在希望您使用 Java8 并实现接口 DefaultLifecycleObserver。由于 Java 8 允许接口具有默认实现,因此他们定义了 DefaultLifecycleObserver 所有方法的实现都是空的,因此您只需要覆盖您使用的方法。
使用 @OnLifecycleEvent
标记函数的旧方法是前 Java 8 个项目的拐杖。这是允许 class 有选择地选择它关心的生命周期事件的唯一方法。替代方案是强制那些 classes 覆盖所有生命周期接口方法,即使将它们留空。
在您的情况下,更改 class 以实现 DefaultLifecycleObserver 并更改您的功能以覆盖 DefaultLifecycleObserver 的适用功能。如果您的项目尚未使用 Java 8,则需要更新 Gradle 构建文件。将它们放在模块 build.gradle
:
的 android
块中
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
您可以创建此函数以使用 DefaultLifecycleObserver
并在 Activity
的 onCreate
() 生命周期回调中调用它
private fun addDefaultLifeCycleObserver() {
val defaultLifecycleObserver = object : DefaultLifecycleObserver {
override fun onCreate(owner: LifecycleOwner) {
super.onCreate(owner)
Log.d("Main", "DefaultLifecycleObserver - onCreate")
}
}
lifecycle.addObserver(defaultLifecycleObserver)
}
为了跟踪当前 Activity
的生命周期,您可以使用 LifecycleEventObserver
class。
首先,创建一个回调,
private val lifecycleEventObserver = LifecycleEventObserver { source, event ->
if (event == Lifecycle.Event.ON_RESUME ) {
Log.e( "APP" , "resumed" )
}
else if ( event == Lifecycle.Event.ON_PAUSE ) {
Log.e( "APP" , "paused" )
}
}
使用 lifecycle.add( Observer )
方法在 Activity
的 onCreate
方法中附加回调,
lifecycle.addObserver( lifecycleEventObserver )
您 class 必须像这样实现 DefaultLifecycleObserver
public class MyFavoriteClass implements DefaultLifecycleObserver
然后实现所需的方法 (Android Studio: ALT + i)
@Override
public void onResume(@NonNull LifecycleOwner owner) {
methodRunsAtOnResume();
}
@Override
public void onDestroy(@NonNull LifecycleOwner owner) {
myFavoriteOnDestroyMethod();
}
在您的 activity 或片段中将其添加到 onCreate()
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyOtherClass class = new MyOtherClass();
getLifecycle().addObserver(class);
}
为了更正确地实现它,请创建您自己的观察器class,将您喜欢观察的对象传递给它。关于它的好文章是 https://medium.com/@MinaSamy/android-architecture-components-lifecycle-433ace1ec05d
您可以简单地将弃用的 @OnLifecycleEvent
替换为 DefaultLifecycleObserver
,如下例所示:
旧代码:
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun onCreate() {
// your code
}
新代码:
override fun onCreate(owner: LifecycleOwner) {
super.onCreate(owner)
// your code
}
将 lifecycle
库更新到 2.4.0 后 Android studio 将所有生命周期事件标记为已弃用。
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun create() {
tts = TextToSpeech(context, this)
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun stopTTS() {
tts?.stop()
}
是否有任何等效的替代品,例如DefaultLifecycleObserver
?
它已被弃用,因为他们现在希望您使用 Java8 并实现接口 DefaultLifecycleObserver。由于 Java 8 允许接口具有默认实现,因此他们定义了 DefaultLifecycleObserver 所有方法的实现都是空的,因此您只需要覆盖您使用的方法。
使用 @OnLifecycleEvent
标记函数的旧方法是前 Java 8 个项目的拐杖。这是允许 class 有选择地选择它关心的生命周期事件的唯一方法。替代方案是强制那些 classes 覆盖所有生命周期接口方法,即使将它们留空。
在您的情况下,更改 class 以实现 DefaultLifecycleObserver 并更改您的功能以覆盖 DefaultLifecycleObserver 的适用功能。如果您的项目尚未使用 Java 8,则需要更新 Gradle 构建文件。将它们放在模块 build.gradle
:
android
块中
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
您可以创建此函数以使用 DefaultLifecycleObserver
并在 Activity
onCreate
() 生命周期回调中调用它
private fun addDefaultLifeCycleObserver() {
val defaultLifecycleObserver = object : DefaultLifecycleObserver {
override fun onCreate(owner: LifecycleOwner) {
super.onCreate(owner)
Log.d("Main", "DefaultLifecycleObserver - onCreate")
}
}
lifecycle.addObserver(defaultLifecycleObserver)
}
为了跟踪当前 Activity
的生命周期,您可以使用 LifecycleEventObserver
class。
首先,创建一个回调,
private val lifecycleEventObserver = LifecycleEventObserver { source, event ->
if (event == Lifecycle.Event.ON_RESUME ) {
Log.e( "APP" , "resumed" )
}
else if ( event == Lifecycle.Event.ON_PAUSE ) {
Log.e( "APP" , "paused" )
}
}
使用 lifecycle.add( Observer )
方法在 Activity
的 onCreate
方法中附加回调,
lifecycle.addObserver( lifecycleEventObserver )
您 class 必须像这样实现 DefaultLifecycleObserver
public class MyFavoriteClass implements DefaultLifecycleObserver
然后实现所需的方法 (Android Studio: ALT + i)
@Override
public void onResume(@NonNull LifecycleOwner owner) {
methodRunsAtOnResume();
}
@Override
public void onDestroy(@NonNull LifecycleOwner owner) {
myFavoriteOnDestroyMethod();
}
在您的 activity 或片段中将其添加到 onCreate()
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyOtherClass class = new MyOtherClass();
getLifecycle().addObserver(class);
}
为了更正确地实现它,请创建您自己的观察器class,将您喜欢观察的对象传递给它。关于它的好文章是 https://medium.com/@MinaSamy/android-architecture-components-lifecycle-433ace1ec05d
您可以简单地将弃用的 @OnLifecycleEvent
替换为 DefaultLifecycleObserver
,如下例所示:
旧代码:
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun onCreate() {
// your code
}
新代码:
override fun onCreate(owner: LifecycleOwner) {
super.onCreate(owner)
// your code
}