【问题标题】:Static methods or broadcast receiver?静态方法还是广播接收器?
【发布时间】:2014-07-04 15:24:05
【问题描述】:

我在这个很棒的网站上找到了很多有用的答案,这对我学习应用程序编程有很大帮​​助。现在是我提出问题的时候了,因为我找不到类似的东西。事情是:我有一个活动(假设是主要活动),它使用一个类来执行异步任务的各种后台操作。在 onPostExecute 方法中,我使用公共静态方法(例如 MainActivity.setResult(asyTaskResult); 我的问题是:这是处理结果的正确方法吗?我应该使用广播接收器吗?有没有更好的使用方法?我是新来发布问题的,我真的不知道我是否以正确的方式提出问题。我将不胜感激任何帮助或指向有用答案的链接。提前致谢。

【问题讨论】:

    标签: android android-asynctask broadcastreceiver return-value static-methods


    【解决方案1】:

    这是处理结果的正确方法吗?

    可能不会,因为这样很容易导致内存泄漏。

    我应该使用广播接收器吗?

    可能不是你想的那样。

    有没有更好的方法可以使用?

    AsyncTask 由保留的片段管理,并让任务与片段实例对话,如this sample app

    或者,使用事件总线,例如 LocalBroadcastManager、Square 的 Otto 或 greenrobot 的 EventBus,例如 this sample app

    【讨论】:

    • 如果我理解正确,方法是在执行异步工作的主要活动中添加一个支持片段。是否可以从支持片段访问主要活动的方法?或者我什么都不懂?
    • @user3805886:“并且可以从支持片段访问主要活动的方法吗?” -- 尽量不要在后台线程中这样做(AsyncTaskdoInBackground())。让片段在主应用程序线程上谈论其托管活动是安全的(例如,AsyncTaskonPostExecute())。
    • 好的。我用localbroadcast manager解决了这个问题。感谢您的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多