onClose()
当我通过覆盖函数将程序发送到后台时,我试图让我的程序使用更少的资源。我的第一步是停止它绘制文本和仪表字段。
我一直在阅读有关效率的文档, “消除设备上不必要的处理”
“您可以使用方法在屏幕不可见时停止动画或重新绘制屏幕,并在屏幕再次可见时恢复。您可以覆盖 Screen.onExposed(),当您的应用程序的屏幕位于显示器顶部时调用堆栈并显示给用户。您可以覆盖 Screen.onObscured(),当您的应用程序的屏幕未向用户显示或被另一个屏幕遮挡时调用。
我知道如果我使用isForeground()
,如果我的应用程序在后台,它会阻止它绘画,但如果它被另一个应用程序遮挡,它会做同样的事情吗?使用起来似乎更简单isForeground()
private boolean isExposed;
protected void onExposed()
{
isExposed = true;
}
protected void onObscured()
{
isExposed = false;
}
public void batteryStatusChange(int status)
{
// TODO Auto-generated method stub
if ((status & DeviceInfo.BSTAT_LEVEL_CHANGED) != 0)
{
//is there a difference between the two if's?
//if(isExposed)
//if(UiApplication.getUiApplication().isForeground())
{
batteryStatusField.setText(getBatteryLevel());
bitGauge6.setValue(DeviceInfo.getBatteryLevel());
}
}
}
public boolean onClose()
{
UiApplication.getUiApplication().requestBackground();
return true;
}