関数をオーバーライドしてバックグラウンドに送信するときに、プログラムが使用するリソースを少なくしようとしてい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;
}