Androidはリターンキーを2回押して、プログラムを終了します

多くのアプリケーションには、リターンキーを2回押すことでプログラムを終了する設定がありますが、実際には非常に簡単です。これはブロードキャストによって実現されます。
最初にBaseActivityを定義して、すべてのアクティビティがこのクラスから継承するようにし、このクラスでブロードキャスト受信クラスを定義し、ブロードキャストを受信した後にfinish()を定義して、すべてのアクティビティがブロードキャストを受信するためのこのメソッドを持つようにします。仕上げは終わりました。
onResume()メソッドにブロードキャストを登録し、このクラスが破棄されたときにブロードキャストをキャンセルします。破棄することを忘れないでください。そうしないと、システムメモリを占有し続けます。

public class BaseActivity extends Activity {
    
    
    BroadcastReceiver finishApplicationBroadcastReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            finish();
        }
    };

    protected void onResume() {
        super.onResume();
        IntentFilter filter = new IntentFilter();
        filter.addAction("com.example.gouchao");
        this.registerReceiver(finishApplicationBroadcastReceiver, filter);
    };

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        this.unregisterReceiver(finishApplicationBroadcastReceiver);
        super.onDestroy();
    }
}

プログラムを終了するためにリターンキーを2回押す必要があるアクティビティで、ブロードキャストを送信します。

    // 连按两次退出应用
    // 记录时间
    private long exitTime = 0;

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if (System.currentTimeMillis() - exitTime > 2000) {
                Toast.makeText(MainActivity.this, "再按一次退出程序",
                        Toast.LENGTH_SHORT).show();
                exitTime = System.currentTimeMillis();
            } else {
                exitApp();
            }
        }
        return true;
    }
    //发送广播
    public void exitApp() {
        Intent intent = new Intent();
        intent.setAction("com.example.gouchao");
        this.sendBroadcast(intent);
    }

onKeyDown()メソッドでtrueを返すことを忘れないでください。そうでない場合は、returnキーを1回押して、前のアクティビティに直接戻ります。

おすすめ

転載: blog.csdn.net/lizebin_bin/article/details/49824447