1

私は Android 開発の初心者で、大学のプロジェクトへの最初の申請を終えたところです。完全に機能するスプラッシュ スクリーンを追加しました。メイン メニューの前にロードされ、3 秒後に切り替わりますが、スプラッシュ スクリーン中に電話で戻るボタンを押すと、3 秒後にアプリケーションから取り出されますメインメニューが表示されます。スプラッシュ画面で戻るボタンが押された場合、アプリケーションを破棄する方法はありますか?

これは私のsplash.javaファイルです

public class Splash extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.splash);

        Thread SplashTimer = new Thread(){
            public void run(){
            try {
                sleep(3000);//3 seconds
                Intent menuIntent = new Intent("com.example.Main");
                    startActivity(menuIntent);
                }   
                catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                finally {
                        finish();                   
                }
            }
        };
        SplashTimer.start();
    }

}

4

3 に答える 3

2

このコードは、メモリ リークのない方法でそれを行う必要があります。

public class Splash extends Activity {

    private static final int SPLAH = 1;
    private final MyHandler mHandler = new MyHandler(this);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.splash);
        Message m = Message.obtain();
        m.what = SPLAH;
        mHandler.sendMessageDelayed(m, 3000);
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        mHandler.removeMessages(SPLAH);
    }

    private static class MyHandler extends Handler {
        private final WeakReference<Splash> mActivity;

        public MyHandler(Splash activity) {
            mActivity = new WeakReference<Splash>(activity);
        }

        @Override
        public void handleMessage(Message msg) {
            if (msg.what == SPLAH) {
                Splash s = mActivity.get();
                if (s != null) {
                    Intent menuIntent = new Intent("com.example.Main");
                    s.startActivity(menuIntent);
                    s.finish();
                }
            }
        }
    }
}
于 2013-05-03T12:23:38.437 に答える
0

スプラッシュ アクティビティ コードでこれを使用すると、[戻る] ボタンの動作をより簡単にブロックまたは変更できます (API 5 以降)。

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

スーパー パーツをコメント アウトしてアプリを閉じる [戻る] ボタンを停止するか、スーパー コールの前にここで時間遅延を指定してスレッドを中止します。

于 2013-05-03T12:23:36.370 に答える
0

試す:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
  if (keyCode == KeyEvent.KEYCODE_BACK) {
     finish();
     return true;
 }
  return super.onKeyDown(keyCode, event);
}
于 2013-05-03T12:07:37.900 に答える