I do not see how it can work - my thread is asynchronous task blocked
on "receive" method
The thread must initiate update of textview

i had a look at the AsyncTask but what parameters should be passed to
it?
Thanks again,
-V

On Oct 16, 5:03 pm, Kostya Vasilyev <kmans...@gmail.com> wrote:
>   Runnable is a Java interface that defines one method: "run". You can
> think of it as a method packaged as an object.
>
> Define a class that implements Runnable, and pass it to m_view.update()
> or runOnUIThread().
>
> Once you've done that, the runnable object's run() method will be called
> (asynchronously) on the UI thread. This method can then call methods in
> m_view to display the message etc.
>
> You might also want to look at AsyncTask:
>
> http://developer.android.com/reference/android/os/AsyncTask.html
>
>  >>
> AsyncTask enables proper and easy use of the UI thread. This class
> allows to perform background operations and publish results on the UI
> thread without having to manipulate threads and/or handlers.
> <<
>
> -- Kostya
>
> 17.10.2010 0:12, chcat пишет:
>
>
>
> > Ok, that helps, but what is Runnable action and how is it related to
> > thread?
>
> > On Oct 16, 3:00 pm, Kostya Vasilyev<kmans...@gmail.com>  wrote:
> >>    You can only access UI objects from the main (UI) thread.
>
> >> There are several ways to "post" UI operations to the UI thread.
>
> >> This one is probably the easiest: Activity.runOnUIThread(Runnable action)
>
> >>http://developer.android.com/reference/android/app/Activity.html#runO...)
>
> >> -- Kostya
>
> >> 16.10.2010 20:58, chcat пишет:
>
> >>> I have an Activity with TextView that I am trying to update from
> >>> different thread. To do that i pass TextView to the "updater" thread
> >>> onCreate(..)
> >>> ..
> >>> txtStatus = (TextView)this.findViewById(R.id.status);
> >>> // start udp server as separate thread and pass TextView to that
> >>> thread to print text messages from udp socket
> >>> new Thread(new TelemetryServer(txtStatus)).start();
> >>> //see thread code below
> >>> As a result i have thread error, even though "updater" is
> >>> synchronized:
> >>> ERROR/UDP(282): android.view.ViewRoot$CalledFromWrongThreadException:
> >>> Only the original thread that created a view hierarchy can touch its
> >>> views.
> >>> Any other ideas how to solve this problem?
> >>> Tnank you,
> >>> -V
> >>> public class TelemetryServer implements Runnable {
> >>>     public static final String SERVERIP = "127.0.0.1"; // 'Within' the
> >>> emulator!
> >>>     public static final int SERVERPORT = 2222;
> >>>     private TextView m_view;
> >>>     private DatagramSocket socket;
> >>>     private boolean loop;
> >>>     private synchronized void update( String msg)
> >>>     {
> >>>             m_view.append("\n");
> >>>             m_view.append(msg);
> >>>     }
> >>>     public TelemetryServer(TextView _view)
> >>>     {
> >>>             m_view = _view;
> >>>             loop = true;
> >>>     }
> >>>     public void run() {
> >>>             try {
> >>>                             InetAddress serverAddr = 
> >>> InetAddress.getByName(SERVERIP);
> >>>                             Log.d("UDP", "S: Connecting...");
> >>>                             socket = new DatagramSocket(SERVERPORT,
> >>>                                             serverAddr);
> >>>                             Log.i("TelemetryServer", "started");
> >>>                             while(loop) {
> >>>                                     byte[] buf = new byte[1024];
> >>>                                     DatagramPacket packet = new 
> >>> DatagramPacket(buf, buf.length);
> >>>                                     socket.receive(packet);
> >>>                                     update(new String(packet.getData()));
> >>>                             }
> >>>                     } catch (Exception e) {
> >>>                             Log.e("UDP", "S: Error", e);
> >>>                     } // end of try
> >>>                     Log.d("UDP", "S: Done.");
> >>>                     socket.close();
> >>>     }
> >>> }
> >> --
> >> Kostya Vasilyev -- WiFi Manager + pretty widget 
> >> --http://kmansoft.wordpress.com
>
> --
> Kostya Vasilyev -- WiFi Manager + pretty widget 
> --http://kmansoft.wordpress.com

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