Plz tell does this means really i am confused with this android. "Right, just move your obtainMessage() inside your loop."
On Thu, Feb 3, 2011 at 2:26 PM, Miguel Morales <therevolti...@gmail.com>wrote: > Right, just move your obtainMessage() inside your loop. > I personally use Message.obtain(), although I'm not sure what the > difference is. > > On Wed, Feb 2, 2011 at 11:45 PM, Dianne Hackborn <hack...@android.com> > wrote: > > You are sending the same messages into the handler while they are still > > being dispatched. Each message you send needs to be a new one you > obtain. > > > > On Wed, Feb 2, 2011 at 8:16 PM, yogi <yogi.ru...@gmail.com> wrote: > >> > >> Hi all, > >> I have created to thread in an application, and from these threads i > >> am sending a value. > >> But the App has started but after 5-6 seconds it crashes and with the > >> following log error. > >> > >> > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): FATAL EXCEPTION: main > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): > >> android.util.AndroidRuntimeException: { what=1000 when=2469427 obj=4 } > >> This message is already in use. > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): at > >> android.os.MessageQueue.enqueueMessage(MessageQueue.java:171) > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): at > >> android.os.Handler.sendMessageAtTime(Handler.java:457) > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): at > >> android.os.Handler.sendMessageDelayed(Handler.java:430) > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): at > >> android.os.Handler.sendEmptyMessageDelayed(Handler.java:394) > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): at > >> android.os.Handler.sendEmptyMessage(Handler.java:379) > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): at > >> android.view.ViewRoot.scheduleTraversals(ViewRoot.java:652) > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): at > >> android.view.ViewRoot.requestLayout(ViewRoot.java:596) > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): at > >> android.view.View.requestLayout(View.java:8125) > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): at > >> android.view.View.requestLayout(View.java:8125) > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): at > >> android.view.View.requestLayout(View.java:8125) > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): at > >> android.view.View.requestLayout(View.java:8125) > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): at > >> android.view.View.requestLayout(View.java:8125) > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): at > >> android.widget.TextView.checkForRelayout(TextView.java:5378) > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): at > >> android.widget.TextView.setText(TextView.java:2688) > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): at > >> android.widget.TextView.setText(TextView.java:2556) > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): at > >> android.widget.TextView.setText(TextView.java:2531) > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): at > >> com.demo.app.handlerapp$3.handleMessage(handlerapp.java:95) > >> 02-03 09:40:19.598: ERROR/AndroidRuntime(1684): at > >> android.os.Handler.dispatchMessage(Handler.java:99) > >> > >> Please refer to the following code which i have written. > >> > >> package com.demo.app; > >> > >> import android.app.Activity; > >> import android.os.Bundle; > >> import android.os.Handler; > >> import android.os.Message; > >> import android.view.View; > >> import android.view.View.OnClickListener; > >> import android.widget.Button; > >> import android.widget.TextView; > >> import android.widget.Toast; > >> > >> public class handlerapp extends Activity implements OnClickListener{ > >> /** Called when the activity is first created. */ > >> @Override > >> public void onCreate(Bundle savedInstanceState) { > >> super.onCreate(savedInstanceState); > >> setContentView(R.layout.main); > >> button=(Button)findViewById(R.id.Button01); > >> tw=(TextView)findViewById(R.id.TextView01); > >> tw.setText("click button to start"); > >> button.setOnClickListener(this); > >> } > >> @Override > >> public void onClick(View v) { > >> // TODO Auto-generated method stub > >> switch(v.getId()){ > >> case R.id.Button01: > >> Toast.makeText(getApplicationContext(), "clicked", > >> 2).show(); > >> if(!th.isAlive()) > >> th.start(); > >> if(!th1.isAlive()) > >> th1.start(); > >> break; > >> } > >> > >> } > >> Thread th= new Thread(new Runnable(){ > >> > >> @Override > >> public void run() { > >> // TODO Auto-generated method stub > >> Message msg= handler.obtainMessage(); > >> for(int i=2;i<1000;i++) > >> { > >> try { > >> Thread.sleep(5000); > >> } catch (InterruptedException e) { > >> // TODO Auto-generated catch > block > >> e.printStackTrace(); > >> } > >> msg.obj= i; > >> msg.what=2; > >> handler.sendMessage(msg); > >> } > >> > >> } > >> > >> }); > >> Thread th1= new Thread(new Runnable(){ > >> @Override > >> public void run() { > >> // TODO Auto-generated method stub > >> Message msg= handler.obtainMessage(); > >> for(int i=2;i<1000;i++) > >> { > >> try { > >> Thread.sleep(3000); > >> } catch (InterruptedException e) { > >> // TODO Auto-generated catch > block > >> e.printStackTrace(); > >> } > >> msg.obj= i; > >> msg.what=1; > >> handler.sendMessage(msg); > >> } > >> > >> } > >> > >> }); > >> > >> Handler handler = new Handler(){ > >> @Override > >> public void handleMessage(Message msg) { > >> // TODO Auto-generated method stub > >> super.handleMessage(msg); > >> switch(msg.what){ > >> case 1: > >> Toast.makeText(getApplicationContext(), > >> msg.obj.toString(), > >> 1).show(); > >> break; > >> case 2: > >> > >> tw.setText(msg.obj.toString()); > >> removeMessages(msg.what, msg.obj); > >> break; > >> } > >> } > >> > >> }; > >> > >> > >> Button button; > >> TextView tw; > >> } > >> > >> > >> > >> Thanks in Advance > >> Regards > >> Yogi > >> > >> -- > >> 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<android-developers%2bunsubscr...@googlegroups.com> > >> For more options, visit this group at > >> http://groups.google.com/group/android-developers?hl=en > > > > > > > > -- > > Dianne Hackborn > > Android framework engineer > > hack...@android.com > > > > 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 android-developers@googlegroups.com > > To unsubscribe from this group, send email to > > android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com> > > For more options, visit this group at > > http://groups.google.com/group/android-developers?hl=en > > > > -- > ~ Jeremiah:9:23-24 > Android 2D MMORPG: http://developingthedream.blogspot.com/, > http://www.youtube.com/user/revoltingx > > -- > 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<android-developers%2bunsubscr...@googlegroups.com> > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en > -- Regards, Roshan -- 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