我使用LoaderManager获取一些数据,当它完成时,应该显示一个子片段。在某些情况下,当活动已处于暂停状态且无法执行片段事务时,会发生这种情况。
有没有办法获取活动的当前状态(似乎有一个mResume标志)?或者我是否必须维护自己的布尔值?
答案 0 :(得分:5)
快速查看活动source code表示活动类确实跟踪成员 mResumed 的恢复状态。但由于 mResume 不公开, isResumed()被隐藏,我们无法使用它们。
您可以使用简单的解决方案为您提供所有课程的信息。只需创建一个存储状态的基本Activity类。例如:
public class ActivityBase extends Activity {
private boolean mIsResumed = false;
@Override
public void onResume() {
super.onResume()
mIsResumed = true;
}
@Override
public void onPaused() {
super.onPaused()
mIsResumed = false;
}
public boolean isResumed() {
return mIsResumed
}
}
只需在课堂上扩展此课程:
public class MyActivity extends ActivityBase {
private void onLoadDone() {
if (isResumed()) {
// Show the fragment
}
}
}
答案 1 :(得分:5)
The new Architecture Components allow you to do it with:
this.getLifecycle().getCurrentState()
答案 2 :(得分:0)
可以实现此目的的一种方法是在Activity
上使用断点(例如,在onResume
方法中使用断点),然后使用您可以通过以下方式打开“评估表达式”窗口:在您的 Debug菜单窗口上单击鼠标右键,然后从中选择它(或SHIFT + F8)(对于Mac)。打开后,您可以在“评估表达式”窗口中使用以下行来截取当前状态(取决于断点的位置):
getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)
如果返回true
,则表示您的Activity
当前处于<strong>恢复 状态。
如果为false
,则处于另一状态。
他们还有许多其他状态可以使用,只需选中here