2010-11-02 4 views
0

Dans mon application android j'utilise un écran de chargement, traité par tâche asynchrone. En arrière-plan de cette tâche, je voudrais afficher une alerte chaque fois qu'une version améliorée existe dans le serveur. Pourriez-vous s'il vous plaît laissez-moi savoir s'il y a un moyen que je peux le faire dans Android.Alerte d'affichage dans Async doinbackground dans android

Le code est

Task public class AsyncTask {

// can use UI thread here 
    protected void onPreExecute() { 
     // this.dialog.setMessage("Loading..."); 
     prgbar.setVisibility(View.VISIBLE); 
     // this.dialog.show(); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     try { 
       final UpGradation upgrade=(UpGradation) ParserServiceImpl.getUpgrade(); //check this method name correctly. 
       if(upgrade != null) 
       { 

        try { 
         pInfo = getPackageManager().getPackageInfo("com.docomo.aptv", PackageManager.GET_META_DATA); 
         String temp = pInfo.versionName; 
         int pversion= pInfo.versionCode; 
         int upversion=Integer.parseInt(upgrade.getVersion()); 
         Log.i("VALUE RETURNED",""+pversion); 
         Log.i("jayantha","version name"+pInfo.versionName); 
         Log.i("jayanth","version code"+pInfo.versionCode); 

         if(pversion!=upversion) 
         { 

          final AlertDialog alert = new AlertDialog.Builder(context).create(); 
          alert.setTitle("Updates"); 
          alert.setMessage("An updated version of the application is present.Do you wish to download."); 

          alert.setButton("OK", new DialogInterface.OnClickListener() { 
             public void onClick(DialogInterface dialog, int which) { 

            alert.dismiss(); 
             Intent i = new Intent(Intent.ACTION_VIEW); 
             i.setData(Uri.parse(upgrade.getURL().trim())); 
             startActivity(i); 
             finish(); 

            } }); 
          alert.setButton2("Cancel", 
             new DialogInterface.OnClickListener() { 
              public void onClick(
                DialogInterface dialog, 
                int which) { 
               return; 
              } 
             }); 

          alert.setIcon(R.drawable.application_icon_50x50); 
          alert.setCancelable(false); 
          alert.show(); 


          } 
         } 


        catch (NameNotFoundException e1) { 
         // TODO Auto-generated catch block 
         e1.printStackTrace(); 
        } 
       } 

S'il vous plaît faire parvenir vos suggestions.

Merci d'avance :)

Répondre

2

Vous ne pouvez pas afficher les alertes et les boîtes de dialogue de la méthode doInBackground(). nous le postProgress() et le faisons dans le onProgressUpdate() ou attendons le afterExecuted() pour faire ces choses à partir du thread principal de l'interface utilisateur.

0

vous avez finish() votre activité actuelle avant de montrer l'alerte. et vous avez aussi navigué vers une autre activité ... c'est le problème ici.

regardez cet extrait de code. il apparaît avant de montrer l'alerte.

Intent i = new Intent(Intent.ACTION_VIEW); 
i.setData(Uri.parse(upgrade.getURL().trim())); 
startActivity(i); 
finish(); 
+0

Désolé, il a été placé pour le testing.S'il vous plaît vérifier le code maintenant. – Remmyabhavan