[JAVA] On peut dire qu'il y a un problème avec le mécanisme de prévention des coups répétés et le système d'exploitation d'Android.

Sujet principal

Les expériences dans lesquelles des singes et des rats frappent à plusieurs reprises sur des boutons et meurent fous sont célèbres, mais les humains ont également appuyé sur des boutons à plusieurs reprises. C'est pourquoi le bouton mécanisme de prévention des coups répétés sur Android. La méthode elle-même sort relativement, mais je n'ai pas trouvé la méthode à laquelle j'ai pensé, alors je vais l'écrire.

GuardActivity.java



public class GuardActivity extends AppCompatActivity {

    //La dernière fois que le bouton a été appuyé
    private long mLastClickedTime;
    //Temps de prévention des coups répétés.milliseconde
    private static long GUARD_TIME = 200;

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

        ButtonListener listener = new ButtonListener();

        //Liste d'ID du bouton pour définir l'auditeur
        int[] BUTTON_LIST = {R.id.ButtonEnter, R.id.ButtonExit, R.id.ButtonNext, R.id.ButtonPrev};

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

    //Cliquez sur l'écouteur
    private class ButtonListener implements View.OnClickListener {

        @Override
        public void onClick(View v) {
            long currentTime = System.currentTimeMillis();
            if (currentTime - mLastClickedTime < GUARD_TIME) {
                //Heure actuelle-Heure du dernier tapé<Temps de prévention des coups répétés
                //Ne rien faire en cas de
                return;
            }
            //Mettre à jour la dernière fois tapée
            mLastClickedTime = currentTime;

            switch (v.getId()) {
                case R.id.ButtonEnter:
                    //Traitement pour chaque bouton
                    break;
            }

        }
    }
}

Ajustez le nombre de secondes de temps de prévention des coups répétés selon vos besoins. Je n'ai pas confirmé l'opération fermement [^ 1].

prime

La raison pour laquelle j'en avais besoin est que le menu créé par PreferenceFragmentCompat a été frappé à plusieurs reprises. Il semble que vous utilisez PreferenceFragment ** Si vous appuyez à plusieurs reprises sur le menu avec l'application de réglage standard Android, le même écran s'ouvrira deux fois **, donc si vous êtes intéressé et avez du temps libre, essayez de le frapper à plusieurs reprises. Même si vous appuyez sur différents boutons séparément dans un court laps de temps, l'écran s'ouvrira deux fois [^ 2]. Je suis sûr que je l'ai confirmé avec Oreo de Nexus 5X. Cela peut ne pas être possible selon le modèle. Je ne veux pas réimplémenter ce qui est déjà dans le cadre, mais dans le cas d'un chan désordonné comme PreferenceFragmentCompat, il est plus facile et plus heureux de le faire comme ça avec le RecyclerView ou ListView familier.

[^ 1]: Parce que mes doigts sont fatigués. [^ 2]: Appuyez → relâchez → appuyez → relâchez à grande vitesse. Pratique requise.

Recommended Posts

On peut dire qu'il y a un problème avec le mécanisme de prévention des coups répétés et le système d'exploitation d'Android.
Problèmes facilement confondus avec Java et JavaScript