I had a same bug in the AsyncTask. So i prefer a Thread.

вторник, 27 марта 2012 г. 5:18:01 UTC+4 пользователь martypantsROK написал:
>
> I have an operation that consumes too much time for the UI thread and 
> need to do it in another thread. I created a thread using AsyncTask 
> and the thread loops until it finds and answer. When its done, I use 
> postExecute to deal with the data and update views. The problem is 
> that the thread intermittently stops in the middle of a long loop with 
> no errors. Sometimes it goes through all data looking, sometimes, the 
> thread returns having only looped through a portion. 
>
> I posted a question on Stackoverflow, but the only answer I got was 
> not to use AsyncTask but just use threads without providing any 
> reasoning or details why one is better than another. 
>
> What do folks here think?  Is there something wrong with the way I've 
> implemented my AsyncTask? Or is the stackoverflow poster correct in 
> that I should just blindly use Thread without understanding why this 
> is incorrect, good, bad, ugly or whatever. 
>
> private void playDeviceTile() { 
>
>     if (mDbHelper.isPlayingDevice(game_id)) { 
>
>         // make sure I'm seeing all played tiles 
>         refreshPlayedTiles(); 
>
>         final Boolean found; 
>
>
>
>         final ProgressDialog dialog = new ProgressDialog(mcontext); 
>         dialog.setMessage("Android is thinking..."); 
>         dialog.show(); 
>
>             new AsyncTask<Void,Void, Boolean>(){ 
>                 @Override 
>                 protected void onPostExecute(Boolean isFound) { 
>                     if (!isFound) { 
>
>                             passPlay(1);  // never found a tile to 
> play. We have to pass 
>                         } 
>                         else { 
>                            playTile(currentTile,1); 
>
>                        } 
>                     dialog.dismiss(); 
>                     postInvalidate(); 
>                     invalidate(); 
>                 } 
>
>                 @Override 
>                 protected Boolean doInBackground(Void... params) { 
>                     try { 
>                         return doSearchforSpot(); 
>                     } catch (Exception e) { 
>                         Log.e("DRAW", "Exception find spot for device 
> tile", e); 
>                     } 
>                     return null; 
>                 } 
>
>             }.execute(); 
>
>     } 
> }

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to