Je souhaite renvoyer les données d'un Thread
à Activity
(qui a créé le thread).Transmettre les données du thread dans l'activité
alors je fais comme décrit à la Android documentation:
public class MyActivity extends Activity {
[ . . . ]
// Need handler for callbacks to the UI thread
final Handler mHandler = new Handler();
// Create runnable for posting
final Runnable mUpdateResults = new Runnable() {
public void run() {
updateResultsInUi();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
[ . . . ]
}
protected void startLongRunningOperation() {
// Fire off a thread to do some work that we shouldn't do directly in the UI thread
Thread t = new Thread() {
public void run() {
mResults = doSomethingExpensive();
mHandler.post(mUpdateResults);
}
};
t.start();
}
private void updateResultsInUi() {
// Back in the UI thread -- update our UI elements based on the data in mResults
[ . . . ]
}
}
Une seule chose que je suis absent ici - où et comment définir mResults
pour que je puisse y accéder à la fois Activity
et Thread
, et serait également capable de modifier au besoin? Si je le définis comme final
dans MyActivity
, je ne peux plus le changer en Thread
- comme il est montré dans l'exemple ...
Merci!
Les performances Android doc suggère la portée du paquet, non protégé. protégé peut entraîner la fuite des détails d'implémentation dans des sous-classes à l'extérieur de votre paquet. – adamp
Cela devrait être «volatile» pour fonctionner. – Gray