【问题标题】:Handling UI code from a Thread处理来自线程的 UI 代码
【发布时间】:2011-01-14 02:06:11
【问题描述】:

我知道如何使用处理程序来更新 UI 元素,例如进度条 toast 等。

我遇到的问题是当上下文消失时,例如用户按下后退按钮或 Activity 出于某种原因完成。这会导致我的应用程序经常崩溃。

我尝试使用 getApplicationContext()(我认为这将在我的整个应用程序中都可用)但这从来没有奏效 - 相反我的应用程序崩溃了!

我在所有 UI 更新代码周围放置了 try catch 块,这可行但有必要吗?

那么......处理这个问题的最糟糕的方法是什么?

【问题讨论】:

    标签: android


    【解决方案1】:

    我遇到的问题是 上下文消失,例如用户 按返回按钮或 活动因某种原因结束。 这会导致我的应用程序崩溃 经常。

    默认情况下,如果用户更改屏幕方向,您也会得到此信息,因为原始活动被破坏并创建一个新活动。

    我尝试使用 getApplicationContext() (认为​​这将是可用的 在我的整个申请中)但是 这从来没有用过 - 而是我的 应用程序崩溃了!

    从操作 UI 的角度来看,应用程序上下文是无用的。

    那么......处理这个问题的最糟糕的方法是什么?

    最后,您需要让线程将事件传递给正确的活动。人们使用的一些技术包括:

    • 使用侦听器模式(例如,服务管理线程,活动向服务注册和注销侦听器,线程在关键事件上调用侦听器)
    • 将活动的“当前”实例放在静态数据成员中,线程使用它来找出应该使用哪一个(由于内存泄漏很危险,如果需要多个实例则失败)
    • 将后台线程限制为缓存数据的线程,活动根据需要(例如,通过轮询)拉取数据

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-11
      相关资源
      最近更新 更多