2016-03-29 9 views
0

私はアプリケーション(3Dゲーム)を持っており、スプラッシュページと紹介には4つのアクティビティを使用しています。ユーザーが離れるとすぐに活動を殺したい

ゲームが開始されると、他のアクティビティは自分自身を殺しません。私は実際のデバイスと仮想デバイスでこれをテストしています。私はアンドロイドシステムがそうする必要があるときにメモリを回収することを知っています。私のアプリは、メモリが少ないデバイスを除いて、すべてのデバイスと画面サイズで動作し、メモリを使用しないでゲームを実行するのに十分なメモリを持っているようですアンドロイドはKitkatからのみメモリを回収するため、すぐにゼリービールを稼動するデバイスが詰まりクラッシュする。

ユーザーが離れるとすぐに私の活動を終了する方法はありますか?これは私のスプラッシュページの1つで、タイマーを使用して次のアクティビティに移動します。

あなたが使用することができ
new CountDownTimer(3000, 1000) { 

    public void onFinish() { 
     Intent intent1 = new Intent(activity1.this,activity2.class); 
     startActivity(intent1); 
     overridePendingTransition(R.anim.fadein, R.anim.fadeout); 
     finish(); 
    } 
    public void onTick(long millisUntilFinished){ 
    } 
}.start(); 
+0

次のアクティビティにインテントを送信するとすぐに、finish()を呼び出します。次の行に –

答えて

1

  • FLAG_ACTIVITY_CLEAR_TOP
  • FLAG_ACTIVITY_SINGLE_TOP
  • FLAG_ACTIVITY_CLEAR_TASK
  • FLAG_ACTIVITY_NEW_TASK

例(以前のすべての活動を終了します)

Intent intent = new Intent(getApplicationContext(), Home.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

または

.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK) 

それは完全に以前のすべてのアクティビティ(複数可)をクリアし、新たな活動を開始します。

0
public static void goTo(Activity from, Class<?> to) { 
    Intent intent = new Intent(from, to); 
    if (from != null) 
    { 
     from.startActivity(intent); 
     from.finish(); //**This will do** 
    } 
} 

あなたのケースでは、activity1.finish()を呼び出す必要があります。

+0

ありがとう@David。あなたの答えは私のために働いた – Kathiravan

0

アクティビティはJavaオブジェクトです。 Javaでは、自分でオブジェクトを削除することはありません。ガベージコレクタがそれを行います。あなたが移動した後、あなたの活動のオブジェクトへのリンクを保存していないことを確認してください

  1. :だから、手動でメモリから活動を削除することはできませんが、アクティビティを削除するには、ガベージコレクタに役立ついくつかのことを行うことができますその他のアクティビティ
  2. コードの例と同様に、呼び出し終了()を呼び出します。

これは、ガベージコレクタは、必要に応じてメモリからアクティビティを削除します。

P.私はあなたの記憶上の問題は、メモリからのアクティビティを削除しないことに起因するとは考えていません。メモリ使用量を最適化するための他の機能、つまりメモリが少ないデバイスには、より小さいまたは少ない品質の画像/モデルを使用できます。

関連する問題