2011-04-28 4 views
0

salut à tous mon code s'écrase et j'ai besoin d'aide tout fonctionne bien accepter pour cette partie s'il vous plaît si quelqu'un peut aider ce serait génial .....android minuterie avec faire ... tandis que

il n'y a pas d'erreur, mais il se bloque à timer.schedule(loadImg2, 5000); qui est avant la if (!c.moveToNext())

ma question: dois-je utiliser la minuterie correctement dans la boucle .... parce que c'est là que les accidents de code ... ??! je ne vois jamais ce journal "+-+-+-+-+-+-+-+-+- Getting out " ou toute chose qui vient après .... ??

merci à tous

do { 
       Log.v("log_tag", "+-+-+-+-+-+-+-+-+- Ttrying to cancel "); 
        //timer.cancel(); 
       Log.v("log_tag", "+-+-+-+-+-+-+-+-+- Timer canceled "); 

       timer=new Timer(); 

       Log.v("log_tag", "+-+-+-+-+-+-+-+-+- New timer created "); 
        //delay amount of time(5s here) in milliseconds before first execution. 
        //period amount of time(1s here) in milliseconds between subsequent executions. 

       timer.schedule(loadImg2, 5000); //this did not produce any effect so far 


       if (!c.moveToNext()){ 
        //destroy 
         timer.cancel(); 
         myImageView.setImageBitmap(null); 
         Log.v("log_tag", "+-+-+-+-+-+-+-+-+- Getting out "); 
         //get out of the loop or set c.moveToFirst() 
        break; 
       } 

      }while (true); 


     } 



     TimerTask loadImg2 = new TimerTask(){ 

      @Override 
      //Load Img2 
      public void run() { 
       runOnUiThread(new Runnable(){  
        public void run() {  
         Log.v("log_tag", "+-+-+-+-+-+-+-+-+- Inside loadImg2 "); 
         titleText.setText(DisplayTitle(c)); 
         Bitmap bitmap2 = BitmapFactory.decodeFile(c.getString(5)); 
          myImageView=(ImageView)findViewById(R.id.imageview1); 
          myImageView.setImageBitmap(null); 
       timer.cancel(); 

        } 
      }); 
     }  


     } ; 
+0

Ce qui ne fonctionne pas comme prévu? Y a-t-il une erreur? – JohnD

+0

Ce n'est pas une question – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+0

@ kinger9120: il n'y a pas d'erreur mais il plante à 'timer.schedule (loadImg2, 5000);' c'est-à-dire avant le 'if (! c.moveToNext())' – moe

Répondre

1

Il y a un problème que vous ne pouvez pas définir timer.schedule() plus d'une fois de temps. Essayez d'attraper une exception:

try{ 
    timer.schedule(loadImg2, 5000); 
} catch (IllegalArgumentException e){ 
    Log.v(TAG, "IllegalArgumentException"); 
} catch (IllegalStateException e){ 
    Log.v(TAG, "IllegalStateException"); 
} 

Ensuite, l'application ne tombe pas en panne. Mais le minuteur sera réglé juste la première fois.

Je ne connais pas la solution de ce problème. J'essaie de le trouver aussi.

+0

essayez 'ScheduledThreadPoolExecutor' .. cela fonctionne pour moi – Vera