初めてのAndroidアプリを作ってみました。それはうまく機能しますが、奇妙なことに、一時停止してからメインのアクティビティを再開すると(基本的に設定メニューを表示するとき)、アプリケーションの FPS が大幅に低下し、その理由がわかりません。
これが私の構造です:
DrawView は、各フレームで処理 (計算と描画) を行う「更新」メソッドを使用して View クラスを実装するクラスです。
メイン アクティビティは DrawView を (コンテンツ ビューとして) 作成し、Handler と Runnable を使用して 10 ミリ秒ごとに更新するように要求します。
Main.java の (簡略化された) コードは次のとおりです。
public class Main extends Activity {
DrawView drawView;
private Handler myHandler;
private Runnable myRunnable = new Runnable() {
public void run() {
drawView.update();
myHandler.postDelayed(this, 10);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
drawView = new DrawView(this);
setContentView(drawView);
myHandler = new Handler();
myHandler.post(myRunnable);
}
@Override
protected void onPause() {
super.onPause();
if(myHandler != null) myHandler.removeCallbacks(myRunnable);
}
@Override
protected void onResume() {
super.onResume();
if(myHandler != null) myHandler.post(myRunnable);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId())
{
case R.id.menu_close:
finish();
break;
case R.id.menu_settings:
Intent settingsActivity = new Intent(getBaseContext(), Preferences.class);
startActivity(settingsActivity);
}
return super.onOptionsItemSelected(item);
}
}
DrawView.update メソッドに FPS カウンターを実装することで、初期設定アクティビティを開いて閉じると、FPS が最初は 100+ から上限の 60 まで低下することに気付きました。
どこが間違っているのか分かりません。