[JAVA] Es kann gesagt werden, dass es ein Problem mit dem Mechanismus zur wiederholten Trefferverhütung und dem Betriebssystem von Android gibt.

Hauptthema

Experimente, bei denen Affen und Ratten wiederholt Knöpfe drücken und verrückt sterben, sind berühmt, aber auch Menschen drücken wiederholt Knöpfe. Aus diesem Grund wiederholte der Knopf den Mechanismus zur Verhinderung von Treffern unter Android. Die Methode selbst kommt eher heraus, aber ich kann die Methode, an die ich gedacht habe, nicht finden, also werde ich sie schreiben.

GuardActivity.java



public class GuardActivity extends AppCompatActivity {

    //Das letzte Mal, als die Taste gedrückt wurde
    private long mLastClickedTime;
    //Wiederholte Trefferverhütungszeit.Millisekunde
    private static long GUARD_TIME = 200;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ButtonListener listener = new ButtonListener();

        //ID-Liste der Schaltfläche zum Einstellen des Listeners
        int[] BUTTON_LIST = {R.id.ButtonEnter, R.id.ButtonExit, R.id.ButtonNext, R.id.ButtonPrev};

        for (int buttonId : BUTTON_LIST) {
            findViewById(buttonId).setOnClickListener(listener);
        }
    }

    //Klicken Sie auf Listener
    private class ButtonListener implements View.OnClickListener {

        @Override
        public void onClick(View v) {
            long currentTime = System.currentTimeMillis();
            if (currentTime - mLastClickedTime < GUARD_TIME) {
                //Aktuelle Uhrzeit-Letzte getippte Zeit<Wiederholte Trefferverhütungszeit
                //Tun Sie nichts im Fall von
                return;
            }
            //Aktualisieren Sie die zuletzt getippte Zeit
            mLastClickedTime = currentTime;

            switch (v.getId()) {
                case R.id.ButtonEnter:
                    //Verarbeitung für jede Schaltfläche
                    break;
            }

        }
    }
}

Passen Sie die Anzahl der Sekunden wiederholter Trefferverhinderungszeit entsprechend an. Ich habe die Operation nicht fest bestätigt [^ 1].

Bonus

Der Grund, warum ich dies brauchte, ist, dass das von PreferenceFragmentCompat erstellte Menü wiederholt aufgerufen wurde. Es scheint, dass Sie PreferenceFragment verwenden ** Wenn Sie mit der Android-Standardeinstellungsanwendung wiederholt auf das Menü klicken, wird derselbe Bildschirm zweimal geöffnet **. Wenn Sie also interessiert sind und Freizeit haben, versuchen Sie es wiederholt. Selbst wenn Sie in kurzer Zeit verschiedene Tasten separat drücken, wird der Bildschirm zweimal geöffnet [^ 2]. Ich bin sicher, ich habe es mit Oreo von Nexus 5X bestätigt. Je nach Modell ist dies möglicherweise nicht möglich. Ich möchte nicht erneut implementieren, was bereits im Framework enthalten ist, aber im Fall eines chaotischen Chans wie PreferenceFragmentCompat ist es einfacher und glücklicher, dies mit dem bekannten RecyclerView oder ListView so zu machen.

[^ 1]: Weil meine Finger müde sind. [^ 2]: Drücken Sie → loslassen → drücken → loslassen mit hoher Geschwindigkeit. Übung erforderlich.

Recommended Posts

Es kann gesagt werden, dass es ein Problem mit dem Mechanismus zur wiederholten Trefferverhütung und dem Betriebssystem von Android gibt.
Probleme, die leicht mit Java und JavaScript verwechselt werden können