Bonsoir,
Je sollicite votre aide car depuis quelque jours je suis bloquer dans le devellopement de mon Application
Je voudrai crée de mes propre main (Pour apprendre) une application type airdroid pour cela j'ai besoin d'une connexion socket
La connexion fonctionne car j'ai reussi a envoyer des message a partir d'une page web cependant dès que la méthode socket ("start()") est lancée a l'aide d'un bouton l'activity ce bloque le bouton reste en mode "appuyer".
Alors j'ai voulu utilisée un service pour faire tourner le server en arriere plan mes dès que le service est lancée pareil sa bloque tout.
SERVER
Service
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 public class server implements Runnable { public static void start() throws IOException { boolean run = true; ServerSocket serverSocket = new ServerSocket(7000); Socket connectionSocket = null; InputStream input = null; OutputStream output = null; while(run){ try { connectionSocket = serverSocket.accept(); input = connectionSocket.getInputStream(); output = connectionSocket.getOutputStream(); // At this point do whatever you need to do with these streams } catch(Exception e) { } finally { if(input != null) { BufferedReader in = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); } if(output != null) { output.close(); } } }}}
Appel Service Dans MainActivity
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public void onStart(Intent intent, int startId) { super.onStart(intent, startId); try { server.start(); Toast toast = Toast.makeText(getApplicationContext(), "Server OK", Toast.LENGTH_SHORT); toast.show(); } catch (IOException e) { Toast toast = Toast.makeText(getApplicationContext(), "Erreur Server", Toast.LENGTH_SHORT); toast.show(); } this.stopSelf(); }
Bien sur j'ai essayer dans le code du server de mettre dans if(input != null) run = false; et la la boucle s'arrete et le bouton se déclenche a la reception de donnée mais je voudrai que le service tourne en continu pendant que l'application est ouverte ! et sans que l'affichage plante en attendant la fin de la boucle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Intent service = new Intent(this, MonService.class); this.startService(service);
Bref j'espere avoir fournie assez de renseignement
Merci d'avance pour vos réponse
Partager