I'm developing an android app that requires to make UI changes according to a background thread processing results, I tried the following code at first:
        Thread run_time = new Thread (){
            public void run(){
                ConnectToServer connect = new ConnectToServer(null);
                while(true){
                        String server_response = connect.getServerResponse();
                        if(!server_response.equals(null)){  
                            setResponse(server_response);
                            response_received();
                    }
                }
            }
        };
        run_time.start();
but my App crashes because i tried to make a UI changes from that background thread, then I tried that way:
        runOnUiThread(new Runnable() {
            public void run(){
                ConnectToServer connect = new ConnectToServer(null);
                while(true){
                        String server_response = connect.getServerResponse();
                        if(!server_response.equals(null)){
                            setResponse(server_response);
                            response_received();
                    }
                }
            }
        });
but i got that exception:
01-29 16:42:17.045: ERROR/AndroidRuntime(605): android.os.NetworkOnMainThreadException
01-29 16:42:17.045: ERROR/AndroidRuntime(605):     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1084)
01-29 16:42:17.045: ERROR/AndroidRuntime(605):     at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:151)
01-29 16:42:17.045: ERROR/AndroidRuntime(605):     at libcore.io.IoBridge.recvfrom(IoBridge.java:503)
01-29 16:42:17.045: ERROR/AndroidRuntime(605):     at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488)
01-29 16:42:17.045: ERROR/AndroidRuntime(605):     at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
and after search i found that I must run the code as AsyncTask to avoid these problems, but when attempting to use it i found that it's must be used with small tasks only not like a thread that runs in the background all the run_time.
So, what's the best day to run a thread or a task in the background in whole the run_time and also reflect it's changes to the UI.
 
     
     
     
     
    