Pls see the documentation for the solution:
http://developer.android.com/resources/faq/commontasks.html#threading

On 16 October 2010 18:58, chcat <[email protected]> wrote:

> 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();
>        }
> }
>
>
> --
> 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]<android-developers%[email protected]>
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en

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

Reply via email to