我有一个带有 AlarmManager 的 Android 应用程序,该应用程序每 15 分钟重复一次。根据此结果,我想更新 UI,但如果它还没有焦点,我不希望 Android 将应用程序带到前台。
我怎样才能做到这一点?或者,如何使 UI 更新在 onResume 中运行?
我正在public static void updateRunningStatusTextView(Boolean inStatus)
从服务和类调用主要活动的方法
我有一个带有 AlarmManager 的 Android 应用程序,该应用程序每 15 分钟重复一次。根据此结果,我想更新 UI,但如果它还没有焦点,我不希望 Android 将应用程序带到前台。
我怎样才能做到这一点?或者,如何使 UI 更新在 onResume 中运行?
我正在public static void updateRunningStatusTextView(Boolean inStatus)
从服务和类调用主要活动的方法
@Override
protected void onRestart() {
super.onRestart();
new Handler().postDelayed(new Runnable() {
public void run() {
// update UI here from cached values
}
}, 100);
}
我很确定你的第一个选择不会发生。可以从非线程postInvalidate()
更新,但这是可用的View
UI
...仅当此视图附加到窗口时。
根据文档
或者,如何使 UI 更新在 onResume 中运行?
这取决于很多东西,例如View
,数据以及代码中的内容,但您可以将数据设置在静态类中或将其保存在类似的东西中,然后SharedPreferences
从那里检索数据,比如String
使用setText()
TextView
好吧,你没有。如果它在后台,则无需更新 UI!
然后,您只需要在恢复您的应用程序 (onResume) 时使用您拥有的最新数据更新 UI。