I would have thought the same, too - AsyncTask or Thread - there's
something else going.
Here's what is called by doInBackground() - it's a loop through
possible moves until the first fit is found.
My Log.d("WTF"...) in the middle simply stops after a couple of
columns.
private Boolean doSearchforSpot(){
Boolean found = false;
tileClass tile;
int tileNum;
BoardClass spot;
int rot;
int maxrot;
int score = -1;
int i = 0;
// totally brain-less, brute-force, 1st fit. Loop through
// all open spots on the board, and check each tile in each
rotation
// and return the first time a valid placement and score occurs.
while ((i < deviceHandNumber) && (!found)) {
tileNum = deviceHand[i];
tile = tiles.get(tileNum);
int row = TileExtents[TOP];
int col = TileExtents[LEFT];
while ((row <= TileExtents[BOTTOM]) && (!found)) {
while ((col <= TileExtents[RIGHT]) && (!found)) {
spot = board.get(ColRowGrid[col][row]);
if (!spot.occupied) {
if (spot.facedown) {
rot = 3;
maxrot = 6;
}
else {
rot = 0;
maxrot = 3;
}
while ((rot < maxrot) && (!found)) {
// set the rotation and check
for a score
tile.setRotate(rot);
Log.d("WTF","CRT "+col+"
"+row+" "+rot+"
"+tile.getScore(0)+" "+tile.getScore(1)+" "+tile.getScore(2));
score =
placeTileOnBoard(spot.index, tileNum);
if (score >= 0) {
// hey! we found a
spot. Play it.
turnScore = score;
currentTile = tileNum;
found = true;
}
rot++;
}
}
col++;
}
row++;
col=TileExtents[LEFT];
}
i++;
}
return found;
}
On Mar 27, 10:37 am, Dianne Hackborn <[email protected]> wrote:
> If your thread is stopping, it is an issue in your implementation of
> doInBackground(), which you haven't shown. And whatever your problem is,
> you will have it with a Thread as well. AsyncTask is just doing work from
> threads, after all.
>
>
>
>
>
>
>
>
>
> On Tue, Mar 27, 2012 at 1:18 AM, martypantsROK <[email protected]> wrote:
> > 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 [email protected]
> > To unsubscribe from this group, send email to
> > [email protected]
> > For more options, visit this group at
> >http://groups.google.com/group/android-developers?hl=en
>
> --
> Dianne Hackborn
> Android framework engineer
> [email protected]
>
> Note: please don't send private questions to me, as I don't have time to
> provide private support, and so won't reply to such e-mails. All such
> questions should be posted on public forums, where I and others can see and
> answer them.
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en