8
votes

Utilisation du gestionnaire Android

Quel est le meilleur moyen d'utiliser un gestionnaire. Des avantages. Tous les exemples que j'ai rencontrés semblent donner la version en ligne.

Utiliser des outils Handler.Callback code> dans la méthode de la classe et de la mise en œuvre de la méthode d'interface. p>

ou p>

à l'aide de la version de code en ligne p>

private Handler mHandler = new Handler(){ ....};


0 commentaires

4 Réponses :


0
votes

Ce n'est vraiment pas une réponse à la question ci-dessus parce que je ne sais pas ce que "la meilleure façon" est, et cela dépend probablement de ce que vous faites. Cependant, je vais expliquer ce que je fais et pourquoi.

J'écris une application qui sert de contrôleur distant. Plusieurs activités vont interagir avec le dispositif contrôlé et différentes choses doivent se produire sur la base du résultat de la commande et de l'activité. Deux choses que je n'ai pas aimées à propos des manipulateurs sont a) qu'ils finissent par être une sorte de construction "lavabo de cuisine", mettant en œuvre des fonctionnalités de différentes sources, et b) qu'ils ont séparé une action (l'envoi de la commande dans mon cas) du traitement du résultat de cette action. Cependant, en utilisant un anonyme (terme de droite? Je suis un gestionnaire aussi noob.) En tant que paramètre, je me permet de garder la logique ensemble. Voici le pseudocode pour mon approche: xxx

(N'oubliez toujours que cela vaut probablement exactement ce que vous avez payé pour cela.;))


0 commentaires

6
votes

Le terme commun ou ces définitions de classe en ligne sont des cours anonymes.

Vous pouvez en savoir plus sur la discussion sur ceux-ci dans Java / Android: classes locales anonymes vs nommés classes

Essentiellement, les principales différences sont la rétablissement, la vitesse du codage, la réutilisation et la portée.

à partir d'un point de vue de la ressource, la création de classe anonyme peut provoquer une surcharge dans le collecteur des ordures, comme indiqué dans Évitez de créer des objets inutiles . Je ne suis pas certain sur les détails exacts de la création de classe anonyme, cependant, il est logique que la mise en œuvre de l'interface de la classe est plus efficace.

@williamtmallard a fourni un exemple de ce que pas à faire. Dans son exemple, un gestionnaire complexe long et syntaxitique doit être mis en œuvre sur la classe plutôt que sur le gestionnaire anonyme, car il est plus difficile de lire et d'éditer lors de la définie en ligne.


0 commentaires

3
votes

http://developer.android.com/reference/andrroid/os/ Handler.html

logobar = (ImageView) findViewById(R.id.splash_bar);//progress bar.
logobarClipe = (ClipDrawable) logobar.getBackground();

timer = new Timer();
timer.schedule(new TimerTask() {
    public void run() {
        updateLogoBarHandler.sendEmptyMessage(0);
}}, 0, rate);


/**************************************************************************************
*2. Handler
*/
//update progress bar.
private Handler updateLogoBarHandler = new Handler() {
    public void handleMessage(Message msg) {
        if(logobarClipe.getLevel() < 10000){
            //1.update image.
            logobarClipe.setLevel(logobarClipe.getLevel() + rate*2);  

            //2.update text.
            float percent = logobarClipe.getLevel() /100;
            String percentTxtVerbose = String.valueOf(percent);
            String percentTxt = percentTxtVerbose.substring(0, percentTxtVerbose.indexOf('.')) + "%";
            bartxt.setText(percentTxt);

        }else{
            timer.cancel();
        }  
        super.handleMessage(msg);
    }
}; 


0 commentaires