我试图让我的程序使用更少的资源,当我通过覆盖onClose()
函数将其发送到背景时。我的第一步是停止绘制文本和计量字段。isForeground()和onExposed和onObscured之间的区别
我一直在阅读效率这个文档, "Eliminating unnecessary processing on the device"
“可以使用的方法来停止动画或重绘屏幕时,屏幕是不可见的,并且当屏幕再次显示恢复。您可以覆盖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;
}
是否设置文本字段的文本和计量器字段的级别**所有**在您的'batteryStatusChange'回调被调用时发生?如果是这样,我认为你不需要担心资源使用。 – Nate