1

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

我怎样才能做到这一点?或者,如何使 UI 更新在 onResume 中运行?

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

4

3 回答 3

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

        public void run() {
            // update UI here from cached values
        }
    }, 100);
}
于 2013-05-29T15:01:07.533 回答
0

我很确定你的第一个选择不会发生。可以从非线程postInvalidate()更新,但这是可用的ViewUI

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

根据文档

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

这取决于很多东西,例如View,数据以及代码中的内容,但您可以将数据设置在静态类中或将其保存在类似的东西中,然后SharedPreferences从那里检索数据,比如String使用setText()TextView

于 2013-05-29T15:02:44.493 回答
0

好吧,你没有。如果它在后台,则无需更新 UI!

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

于 2013-05-29T16:03:28.930 回答