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/Photostream/src/com/google/android/photostream/UserTask.java

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/android/apis/app/AlarmController.html

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