Hi Clay,

Thank for your help so much,
Now, i can fix my problem.I insist to find way to fix my problem in my code
because it will makes my skill better than using someone's code. But next
time, i will use UserTask to do that.

Best regard,
NPAK

On Thu, Mar 5, 2009 at 9:54 AM, Clay <claytan...@gmail.com> wrote:

>
> you have two threads one you post, the other you start...
>
> again I wouldnt endorse the way your trying to manage your threading
> in this case, and Romain (on the developer team) seems to recommended
> doing background updates to activity views using update task so I
> think you might benefit by rethinking your approach.
>
> generally I would post runnable to handlers like this *if you must*
>
> private void updateProgress(int amount){
>                // Update the progress bar
>                mProgressStatus = amount;
>        mHandler.post(new Runnable() {
>            public void run() {
>                mProgress.setProgress(mProgressStatus);
>            }
>        });
>        }
>
> So basically it is possible to hammer that square peg into your round
> hole if you wish, I just wont be the one to do it.
>
> Respectfully,
>
> Clay
>
>
>
> On Mar 3, 11:55 pm, Anh Khoa Nguyen Pham <npak...@gmail.com> wrote:
> > UserTask class is useful but in this case, if i want to fix my problem in
> my
> > code, can you help me to do that?
> > I really appreciate your help !
> > Thanks,
> > NPAK
> >
> > On Wed, Mar 4, 2009 at 2:15 PM, Clay <claytan...@gmail.com> wrote:
> >
> > > so just from the basic use case I dont know that I would use a
> > > handler, basically I really like Romain Guy's implementation for
> > > background user tasks that do things and then  update the screen, its
> > > based on his userTask implementation:
> >
> > >http://code.google.com/p/apps-for-android/source/browse/trunk/Photost.
> ..
> >
> > > so to extend this, it uses generics *very wisely* so you can make any
> > > model you want for both the doInBackground params which returns the
> > > third arg, and becomes the param for onPostExecute.
> >
> > >        /**
> > >     * Background task to verify the create user action. When the
> > > action comes back
> > >     * it could inform the client to sync all data if the username and
> > > password match
> > >     * or that there was a validation error like the user already
> > > exists, or that
> > >     * this is a new user and that it successfully created it.
> > >     *
> > >     */
> > >    private class PostActionTask extends UserTask<Object, Void,
> > > ActionResult> {
> > >        public ActionResult doInBackground(Object... params) {
> > >                ActionResult result =
> > >                        new ActionResult();
> > >                result.setActionStatus("FAILED");
> >
> > >                Action actionToRun = (Action)params[0];
> >
> > >                try {
> > >                        result  =
> > >                                RpcActionClient.executeAction(
> > >                                        actionToRun,
> >
> > >  MomentaryNowApp.getString("app_momentary_now_server"),
> >
> > >  MomentaryNowApp.getInteger("app_momentary_now_server_port"),
> >
> > >  MomentaryNowApp.getString("app_momentary_action_endpoint")) ;
> >
> > >                } catch (IOException e) {
> > >                        Log.e(TAG, "IOException:"+e.getMessage());
> > >                } catch (HttpException e) {
> > >                        Log.e(TAG, "HttpException:"+e.getMessage());
> > >                } catch (URISyntaxException e) {
> > >                        Log.e(TAG,
> "URISyntaxException:"+e.getMessage());
> > >                }
> > >                return result;
> > >        }
> >
> > >        @Override
> > >        public void onPostExecute(ActionResult result) {
> > >                Log.d(TAG, "result:"+result.getActionStatus());
> > >                if(result.getActionStatus().equals("SUCCESS"))
> > >                {
> > >                        //get the progress bar to update
> > >                        ProgressBar progressBar =
> >
> > >  (ProgressBar)findViewById(R.id.create_keyword_send_progress);
> > >                        progressBar.setVisibility(View.GONE);
> >
> > >                        ImageView checked =
> >
> > >  (ImageView)findViewById(R.id.create_keyword_send_toggle);
> > >                        checked.setVisibility(View.VISIBLE);
> >
> > >                }
> > >        }
> > >    }
> >
> > > secondly it is my understanding that AlarmManager is the timer
> > > infrastructure you would most likely use
> > > and that it would then call your background task.
> >
> > >http://developer.android.com/guide/samples/ApiDemos/src/com/example/a.
> ..
> >
> > > I am sure there are other ways to do this but this would be the way I
> > > would try if I was doing what you told me.
> >
> > > Clay
> >
> > > On Mar 2, 11:32 pm, "npak...@gmail.com" <npak...@gmail.com> wrote:
> > > > Hi all,
> > > > My purpose is very simple : each 1second, I want to redraw an object
> > > > on different place on background.
> > > > I do not know where my error on this code below. Hope that you can
> > > > show me or give me an advice to fix this problem
> >
> > > > Here is my code
> >
> > >
> **********************************************************************************************************************
> > > > public class My_View extends View{
> >
> > > >     private Bitmap mBackground_img;
> > > >     private Drawable mMoveObject;
> > > >     private int mObjectw,mObjecth;
> > > >     private int Dx,Dy;
> >
> > > >     private Handler myHandler = new Handler();
> > > >     private long lasttime;
> > > >     public My_View(Context context,AttributeSet ats,int ds)
> > > >     {
> > > >         super(context,ats,ds);
> > > >         init(context);
> > > >     }
> > > >     public My_View(Context context,AttributeSet ats)
> > > >     {
> > > >         super(context,ats);
> > > >         init(context);
> > > >     }
> > > >     public My_View(Context context)
> > > >     {
> > > >         super(context);
> > > >         init(context);
> > > >     }
> >
> > > > public void change()
> > > >     {
> > > >         invalidate();
> > > >     }
> > > > private void init(Context context)
> > > >     {
> > > >         Resources res     = context.getResources();
> > > >         mMoveObject        = res.getDrawable
> > > > (R.drawable.lander_firing);
> > > >         mBackground_img = BitmapFactory.decodeResource(res,
> > > > R.drawable.my_pic);
> > > >         mObjectw = mMoveObject.getIntrinsicWidth();
> > > >         mObjecth = mMoveObject.getIntrinsicHeight();
> > > >         Dx = Dy  = 0;
> >
> > > >         lasttime = System.currentTimeMillis() + 1000;
> > > >         Thread mthread = new Thread(null,doBackground,"Background");
> > > >         mthread.start();
> > > >     }
> > > >     private Runnable doBackground = new Runnable()
> > > >     {
> > > >         public void run()
> > > >         {
> > > >             long now = System.currentTimeMillis();
> > > >             if(lasttime < now )
> > > >             {
> > > >                 Dx = Dx + 10;
> > > >                 Dy = Dy + 10;
> > > >                 lasttime = now + 1000;
> > > >                 myHandler.post(change_view);
> > > >              }
> > > >         }
> > > >     };
> > > >     private Runnable change_view = new Runnable()
> > > >     {
> > > >         public void run()
> > > >         {
> > > >             change();
> > > >         }
> > > >     };
> > > >     @Override
> > > >     public void onDraw(Canvas canvas)
> > > >     {
> > > >         canvas.drawBitmap(mBackground_img,0 ,0 , null);
> > > >         mMoveObject.setBounds(Dx, Dy, Dx+mObjectw, Dy+mObjecth);
> > > >         mMoveObject.draw(canvas);
> > > >     }}
> >
> > >
> **********************************************************************************************************************
> > > > Hope to see your reply soon,
> > > > Thanks in advance,
> > > > NPAK
> >
>

--~--~---------~--~----~------------~-------~--~----~
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