2010-12-02 3 views
5

Je suis un Android n00b si nue avec moi. J'essaie d'analyser l'audio en utilisant AudioRecord dans une classe. Mon problème est que je n'ai aucune idée si l'itinéraire que je vais essayer de faire passer dans un processus séparé est correct. Ce que je veux faire est écoutez à ce processus dans le thread principal de l'interface utilisateur et continuez à mettre à jour une zone de texte en fonction des données dans le fil.Comment passer des données d'une classe de threads séparée à une activité dans Android

C'est ce que j'ai jusqu'à présent:

//RecordActivity.java 
[...] 
public class RecordActivity extends Activity { 
    final Handler mHandler = new Handler(); 
    final Runnable mUpdateResults = new Runnable() { 
     public void run() { 
      updateResultsInUi(); 
     } 
    }; 
    RecordThread t = new RecordThread(); 

private OnClickListener mClickListener = new OnClickListener() { 

    public void onClick(View v) { 
    t.start(); 

    } 
} 

//RecordThread.java 
public class RecorderThread extends Thread { 
[...] 

@Override 
public void run() { 
[...audio process code...] 
} 

est-il un moyen de retour après les données de ma classe RecordThread à la classe RecordActivity? Est-il possible de connecter le gestionnaire en utilisant 2 fichiers .java différents?

Aussi, est-ce la bonne façon de faire? Dois-je utiliser AsyncTask à la place?

Répondre

4

Passez votre mHandler en tant que paramètre au constructeur de vous RecordThread classe, et utiliser mHandler.obtainMessage(...).sendToTarget() pour transmettre des données à la classe d'activité

Sur la RecordActivity classe, déclarer et utiliser le gestionnaire comme:

private final Handler mHandler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
    } 

Ensuite, cela dépend de la façon dont vous avez appelé le getMessage(), si vous avez utilisé, par exemple, obtainMessage(int what, int arg1, int arg2), vous pouvez y accéder en utilisant msg.what, msg.arg1, et msg.arg2.

0

Je recommande de jeter un oeil à la Android fundamentals. Il vous donne un bon aperçu des principaux composants de l'application au sein d'Android. Je pense que c'est une lecture incontournable pour quiconque commence avec Android.

Un service peut être ce dont vous avez besoin. Gardez à l'esprit que les services s'exécutent sur le thread principal. Par conséquent, lors de l'exécution d'opérations coûteuses, vous souhaiterez peut-être activer la commande Handling Expensive Operations in the UI Thread.

+4

Bien que je sois d'accord avec la recommandation, je ne pense pas que cela réponde à quelque chose de la nature de la question ici. Cette page ne traite pas des discussions, ni du passage des messages, sauf dans les termes les plus vagues et les plus généraux. – mikebabcock

Questions connexes