如何在不将其置于前台的情况下更新后台应用的UI?

时间:2013-05-29 14:55:09

标签: android user-interface alarmmanager onresume background-foreground

我有一个带有AlarmManager的Android应用程序,每15分钟重复一次。根据我的结果,我想更新UI,但我不希望Android将应用程序带到前台,如果它没有焦点。

我该怎么做?或者,如何在onResume中运行UI更新?

我在服务和类的主要活动中调用public static void updateRunningStatusTextView(Boolean inStatus)之类的方法

3 个答案:

答案 0 :(得分:0)

@Override
protected void onRestart() {
    super.onRestart();
    new Handler().postDelayed(new Runnable() {

        public void run() {
            // update UI here from cached values
        }
    }, 100);
}

答案 1 :(得分:0)

我很确定你的第一个选择不会发生。有postInvalidate()可以从非View主题更新UI,但这是可用的

  

...仅当此视图附加到窗口时。

根据Docs

  

或者,如何在onResume中运行UI更新?

这取决于许多内容,例如View,数据以及代码中的内容,但您可以将数据设置为静态类,或者将其保存为SharedPreferences之类的内容然后检索来自那里的数据,比如在String的{​​{1}}中使用setText()

答案 2 :(得分:0)

嗯,你没有。如果它在后台,您不需要更新UI!

然后,您只需要在恢复应用程序(onResume)时使用您拥有的最新数据更新UI。