Vah*_*yan 43 java lifecycle android kotlin
将库更新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()
}
Run Code Online (Sandbox Code Playgroud)
有没有等效的替代品,例如DefaultLifecycleObserver
?
S. *_*sel 43
你的类必须像这样实现 DefaultLifecycleObserver
public class MyFavoriteClass implements DefaultLifecycleObserver
Run Code Online (Sandbox Code Playgroud)
然后实现所需的方法(Android Studio:ALT + i)
@Override
public void onResume(@NonNull LifecycleOwner owner) {
methodRunsAtOnResume();
}
@Override
public void onDestroy(@NonNull LifecycleOwner owner) {
myFavoriteOnDestroyMethod();
}
Run Code Online (Sandbox Code Playgroud)
在您的活动或片段中将其添加到 onCreate()
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyOtherClass clazz = new MyOtherClass();
getLifecycle().addObserver(clazz);
}
Run Code Online (Sandbox Code Playgroud)
为了更正确地实现它,创建您自己的观察者类,将您想要观察的对象传递给它。关于它的好文章是https://medium.com/@MinaSamy/android-architecture-components-lifecycle-433ace1ec05d
Ten*_*r04 39
它已被弃用,因为他们现在希望您使用 Java 8 并实现 DefaultLifecycleObserver 接口。由于 Java 8 允许接口具有默认实现,因此它们定义了 DefaultLifecycleObserver 并使用所有方法的空实现,因此您只需重写您使用的方法即可。
标记函数的旧方法@OnLifecycleEvent
是 Java 8 之前项目的拐杖。这是允许类有选择地选择它关心的生命周期事件的唯一方法。另一种方法是强制这些类覆盖所有生命周期接口方法,即使将它们留空。*
根据您的情况,更改您的类以实现 DefaultLifecycleObserver 并更改您的函数以覆盖 DefaultLifecycleObserver 的适用函数。如果您的项目尚未使用 Java 8,则需要更新 Gradle 构建文件。将它们放入android
模块的块中build.gradle
:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
Run Code Online (Sandbox Code Playgroud)
*注意:嗯,他们可以使用旧的 Java 模式,提供一个接口 Adapter 类,该类具有每个接口函数的开放、空实现。然而,这种方法的缺点是听者必须只是一个听者。但我认为如果你关心封装的话通常应该是这种情况。
您可以简单地将已弃用的替换@OnLifecycleEvent
为DefaultLifecycleObserver
,如以下示例所示:
旧代码:
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun onCreate() {
// your code
}
Run Code Online (Sandbox Code Playgroud)
新代码:
override fun onCreate(owner: LifecycleOwner) {
super.onCreate(owner)
// your code
}
Run Code Online (Sandbox Code Playgroud)
为了跟踪 currentActivity
的生命周期,您可以使用该类LifecycleEventObserver
。首先,创建一个回调,
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" )
}
}
Run Code Online (Sandbox Code Playgroud)
在using方法onCreate
的方法中附加回调,Activity
lifecycle.add( Observer )
lifecycle.addObserver( lifecycleEventObserver )
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24063 次 |
最近记录: |