0

主な問題は、アプリがインストールまたは再起動後にのみ起動することです。2 回目は、アプリケーションが正しく実行されません。詳細は以下。

私はいくつかの奇妙な問題に遭遇しました

1) Libgdx did not detect screen size correctly on Android 4 in
   SCREEN_WIDTH = Gdx.graphics.getWidth();

私は369*320代わりに得た960*540

この問題と戦うために、私は次のようにします。

  • Activityを使用して画面サイズを取得するメインクラスを実行しますDisplay
  • 次にAndroidApplication、Admob と Libgdx クラスを開始するクラスを実行します。

2) 2 番目の問題は、アプリが初期化された値なしで、つまり同じメモリで開始されることです。boolean abc=false; 無効な終了のように見えるなどの値の初期化はありませんか?

  • Libgdx クラス (3 番目のクラス) ではexit=true、値を設定して終了し、すべてのテクスチャを破棄します。プログラムは 2 番目のクラスに戻ります。

    public void onCreate(android.os.Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      if (Data.exit) finish();
    

exit2 番目のクラスは、同じ方法でチェックするメイン アクティビティに戻ります

3) 次に興味深いのは、Gdx.graphics.getWidth() 画面サイズを正しく取得できるようになったことです。ミステリー...

4) もしそうなら、アプリを作り直しました。これで、メイン クラスが Libgdx クラスを開始します。正常に動作して終了しますが、インストールまたは再起動後の初回のみです。数秒で LibgdxonCreateが起動しますが、起動render()しません。最初の再起動後に無効な終了のように見えます: メイン クラス コードはこちら

 public class MyActivity extends AndroidApplication 
      implements IActivityRequestHandler {
  public void onCreate(android.os.Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    context.startService(new Intent(context, BillingService.class));
    ....
    // Create the libgdx View
    View gameView = initializeForView(new MyGame(this), false);

    // Create and setup the AdMob view
    adView = new AdView(this, AdSize.BANNER, "aaaaaaa");
  }

@Override
public synchronized void onPause() {
    super.onPause();
}

@Override
public void onStop() {
    super.onStop();
}


@Override
protected void onDestroy() {
    super.onDestroy();
}

何か案は?ありがとう!!

4

1 に答える 1

0

あなたは静的を使用しています。アプリを閉じると値が保持され、Android がプロセスを破棄する前に再度開くため、同じ VM を使用します。Android がいつ破棄するかを制御することはできないため、クラスのコンストラクター/作成メソッドでこれらの変数を初期化してみてください。

それ以外の:

static boolean abc=false;

使用する:

static boolean abc;

public MyClass/create(){
    abc=false;
}

または、必要な場合を除き、静的を使用しないでください。

于 2013-06-19T02:53:54.910 に答える