Comment puis-je utiliser mon code après l'Activité qui est rendu visible?
J'ai une Activité avec 3 toupies. Ces toupies obtenir leurs données à partir d'un web-service par une méthode qui prend environ 1 minute pour être achevé.
Je veux charger l'Activité première et après il s'est rendu visible, appel de web service méthode et charger les données. J'ai testé les codes suivants séparément, mais aucun n'a résolu mon problème. Dans ces échantillons application va dans un écran noir et quand le service web de l'opération, il est rendu visible.
@Override
protected void onCreate() {
//.........
final Runnable r = new Runnable()
{
public void run()
{
loadMyData();
}
};
Utilities.performOnBackgroundThread(r);
}
@Override
protected void onResume() {
new Thread() {
@Override
public void run() {
loadMyData();
}
}.start();
super.onResume();
}
@Override
protected void onStart() {
if (comesFromOnCreateMethod)
{
final Runnable r = new Runnable()
{
public void run()
{
loadMyData();
}
};
Utilities.performOnBackgroundThread(r);
}
comesFromOnCreateMethod = false;
super.onStart();
}
@Override
protected void onResume() {
if (comesFromOnCreateMethod)
{
final Runnable r = new Runnable()
{
public void run()
{
loadMyData();
}
};
Utilities.performOnBackgroundThread(r);
}
comesFromOnCreateMethod = false;
}
OriginalL'auteur Bobs | 2012-04-02
Vous devez vous connecter pour publier un commentaire.
Si vous obtenez un écran noir, alors je suppose que votre code est exécuté sur le thread de l'INTERFACE utilisateur et non sur le fond, provoquant l'INTERFACE utilisateur de bloquer jusqu'à ce que le travail est terminé.
L'une des meilleures solutions pour faire le travail de fond est un AsyncTask. En utilisant cela, vous pouvez l'appeler dans votre onCreate() la méthode, et quand c'est fait, il doit afficher un rappel pour le thread d'INTERFACE utilisateur pour vous dans lequel vous pouvez afficher vos données.
Si vous voulez que cette méthode à exécuter à chaque fois que cette Activité s'affiche, puis l'appeler dans onResume(). Sinon, l'appeler dans onCreate().
Quelque chose dans votre code doit de fuite dans le thread de l'INTERFACE utilisateur et provoqué le blocage.
OriginalL'auteur Mimminito
Dans votre onCreate, faire de l'asynchrone tâches comme les autres l'ont conseillé. Assurez-vous de générer le contenu de la première application, puis d'appeler la asyncTasks. Vous pouvez contrôler vos toupies à partir de la fonction de rappel.
OriginalL'auteur Aadi Droid
Tout d'abord, vous pouvez augmenter votre taux d'acceptation, 39% est assez faible.
De toute façon, vous pourriez vouloir vérifier AsyncTask, il convient de faire la chose. http://developer.android.com/reference/android/os/AsyncTask.html
En général, vous voulez initialiser dans onPreExecute, faire la mise en réseau dans le doInBackGround, et de définir le résultat de la thread de l'INTERFACE utilisateur sur le OnPostExecute. Espérons que cela aidera.
OriginalL'auteur hundeva
Utilisation
AssynchTask()
et vous devriez appeler super.onResume()
ou tout le cycle de vie de la méthode dans le cycle de vie de la méthode d'abord, puis d'autres méthode que vous voulez faire....OriginalL'auteur Yahya Arshad