After this thread run dozens of loops. The Binder Threads are created,
and can be seen in the eclipse debug window. And these Binder Threads
will never get terminated / released. Where does theme come from? How
to prevent this from happening? Or how to get it teminated / released?



public class TServer {

        static final int HTTP_PORT = 7788;
        private static Context FContext = null;

        static class RequestListenerThread extends Thread {

                private final ServerSocket serversocket;
                private final HttpParams params;

                public RequestListenerThread(Context AContext) throws 
IOException {
                        FContext = AContext;

                        this.serversocket = new ServerSocket(HTTP_PORT);
                        this.params = new BasicHttpParams();
                        this.params
                                        
.setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 5000)
                                        
.setIntParameter(CoreConnectionPNames.SOCKET_BUFFER_SIZE,
                                                        8 * 1024)
                                        .setBooleanParameter(
                                                        
CoreConnectionPNames.STALE_CONNECTION_CHECK, false)
                                        
.setBooleanParameter(CoreConnectionPNames.TCP_NODELAY, true);
                        // .setParameter(CoreProtocolPNames.ORIGIN_SERVER,
                        // "HttpComponents/1.1");

                }

                public void terminate() {
                        try {
                                serversocket.close();
                                this.interrupt();
                        } catch (Throwable e) {
                                e.printStackTrace();
                        }
                }

                public void run() {
                        while (!Thread.interrupted()) {
                                try {
                                        // Set up HTTP connection
                                        Socket socket = 
this.serversocket.accept();
                                        DefaultHttpServerConnection conn = new 
DefaultHttpServerConnection
();
                                        conn.bind(socket, this.params);

                                        try {
                                                String aUrl = "";
                                                String aRequest = "";
                                                HttpRequest request = 
conn.receiveRequestHeader();
                                                if (request instanceof 
HttpEntityEnclosingRequest) {
                                                        conn
                                                                        
.receiveRequestEntity((HttpEntityEnclosingRequest) request);
                                                        HttpEntity entity = 
((HttpEntityEnclosingRequest) request)
                                                                        
.getEntity();
                                                        if (entity != null) {
                                                                aRequest = 
EntityUtils
                                                                                
.toString(entity, "UTF-8");
                                                                
entity.consumeContent();
                                                        }
                                                }
                                                aUrl = 
request.getRequestLine().getUri();

                                                String aResponse = 
"中文中文中文中文中文中文中文中文中文";

                                                ContentResolver r = 
FContext.getContentResolver();
                                                Cursor c = 
r.query(Contacts.People.CONTENT_URI, null,
                                                                null, null, 
null);
                                                try {
                                                        while (c.moveToNext()) {
                                                                aResponse = 
aResponse.concat(c.getString(c
                                                                                
.getColumnIndex(Contacts.People.NAME)));
                                                                if 
(c.getPosition() > 30) {
                                                                        break;
                                                                }
                                                        }
                                                } finally {
                                                        c.close();
                                                }

                                                HttpResponse response = new 
BasicHttpResponse(
                                                                
HttpVersion.HTTP_1_0, 200, "OK");
                                                response
                                                                .setEntity(new 
StringEntity(aResponse, "UTF-8"));
                                                
conn.sendResponseHeader(response);
                                                
conn.sendResponseEntity(response);
                                        } catch (Throwable e) {
                                                e.printStackTrace();
                                        } finally {
                                                try {
                                                        conn.shutdown();
                                                } catch (Throwable ignore) {
                                                }
                                        }

                                } catch (InterruptedIOException ex) {
                                        ex.printStackTrace();
                                        // break;
                                } catch (IOException e) {
                                        e.printStackTrace();
                                        // break;
                                } catch (Throwable e) {
                                        e.printStackTrace();
                                        // break;
                                }
                        }
                }
        }

}

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