मैं service
लॉन्च करने की कोशिश कर रहा हूं और फिर सर्वर के साथ कनेक्शन के लिए socket
खोल सकता हूं।मुख्य थ्रेड पर सेवा कैसे चलाएं?
बटन पर क्लिक करें मैं नया Thread
बना देता हूं और फिर सेवा शुरू करता हूं।
Thread t = new Thread(){
public void run(){
mIntent= new Intent(MainActivity.this, ConnectonService.class);
mIntent.putExtra("KEY1", "Value used by the service");
context.startService(mIntent);
}
};
t.start();
फिर service
पर, मैं socket
खोलने के लिए और सर्वर के साथ कनेक्शन की कोशिश
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//TODO do something useful
try {
InetAddress serverAddr = InetAddress.getByName(SERVER_IP);
socket = new Socket(serverAddr, SERVERPORT);
Scanner scanner = new Scanner(socket.getInputStream());
message = scanner.nextLine();
} catch (IOException e) {
e.printStackTrace();
}
return Service.START_NOT_STICKY;
}
लेकिन जब मैंने उसे फोन, मेरे पास त्रुटि
08-30 08:56:49.268: E/AndroidRuntime(3751): java.lang.RuntimeException: Unable to start service [email protected] with Intent { cmp=com.example.testofconnection/.ConnectonService (has extras) }: android.os.NetworkOnMainThreadException*
मुझे लगता है कि समस्या यह है service
main thread
पर है, लेकिन मुझे नहीं पता कि मुझे नई (स्वतंत्रता) टी पर सेवा कैसे शुरू करनी चाहिए connection alive
रखने के लिए hread?
मुझे सर्वर के साथ कनेक्शन रखने की आवश्यकता है। AsyncTask केवल कनेक्शन खोलता है, कुछ अनुरोध भेजता है, कुछ प्रतिक्रिया प्राप्त करता है और बंद हो जाता है, इसलिए मैंने पाया कि सेवा के साथ मैं इसे – Ragaisis
http://developer.android.com/guide/components/services.html लागू कर सकता हूं। सर्विस क्लास – Raghunandan