Sunucuyla bağlantı kurmak için service
'u başlatmaya ve socket
'u açmaya çalışıyorum.Ana iş parçacığı üzerinde hizmet nasıl çalıştırılır?
Düğme tıklandığında, yeni Thread
oluştur ve sonra hizmeti başlat.
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();
Sonra service
, ben socket
açıp sunucusu ile bağlantısı var deneyin
@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;
}
Ama bunu çağırdığınızda, ben hata
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*
Sorunun düşünüyorum service
'un main thread
numaralı telefonunda olduğunu, ancak yeni (bağımsız) t üzerinde hizmete nasıl başlamalıyım? connection alive
tutmak için devam ediyor?
Sunucuyla bağlantıyı canlı tutmam gerekiyor. AsyncTask sadece bağlantıyı açar, bazı istekleri gönderir, bazı yanıtlar alır ve kapanır, bu yüzden servisle bunu – Ragaisis
http://developer.android.com/guide/components/services.html uygulayabilirim. Konuyu genişletme hizmet sınıfı – Raghunandan