【问题标题】:Creating global Runnable?创建全局 Runnable?
【发布时间】:2018-12-03 22:15:20
【问题描述】:

所以,我实现了使用Runnable 的同步机制。 Runnable 的问题是,您必须确保它在Activity 中正确创建和销毁。如果你有很多活动会发生什么? - 大量样板代码。

有没有办法为整个应用程序创建单个实例 Runnable? 可以在SomeClass extends Application 中初始化它作为它的应用程序入口点吗?如果是这样,将如何解决这样的情况:SomeClass.onCreate() 即使用户收到通知也会命中(这也意味着,每次用户收到通知时都会发生同步 - 这很糟糕)。

【问题讨论】:

    标签: android


    【解决方案1】:

    您为什么不使用生命周期感知应用组件,例如来自 android 应用架构组件的 LiveDataViewModel。这是 AsyncTask 的最佳解决方案。

    使用 Runnable,您无法通过活动生命周期来停止或恢复执行。因为如果 Runnable 在后台执行任务,它将完成任何方式,并且会导致内存泄漏。

    另一个简单的解决方案是您可以尝试使用 RxJava 和 RxAndroid,如此简单,代码更少,请参阅this

    如果您仍然想要传统方式,可以尝试this

    【讨论】:

    • 网络请求是使用 RxJava2 完成的。我看不出您的答案如何适用于我的情况。我使用 Runnable 作为执行网络请求的“计时器”。问题是 - 如何确保在整个应用程序中只使用一个/单个 Runnable 并避免在多个活动中使用多个实例。
    • 您没有使用任何网络库进行网络请求吗?
    猜你喜欢
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 2011-09-21
    • 2017-11-12
    • 2019-12-09
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多