Bonjour,

Pour mon application, je créé un service qui va chercher des infos sur un serveur.
En test, celui-ci redémarre de façon intenpestive.
Voici l'image de mon téléphone:
Nom : screenshot.png
Affichages : 101
Taille : 296,3 Ko

Et voici le code du 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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
import android.annotation.TargetApi;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.app.TaskStackBuilder;
import android.content.Context;
import android.graphics.Color;
import android.os.Build;
import android.os.IBinder;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Timer;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import java.io.OutputStreamWriter;
import java.io.BufferedReader;
import java.lang.reflect.Array;
 
public class Majnotif extends Service {
 
 
    int n = -1;
    int compteur = 0;
 
    OutputStreamWriter writer = null;
    BufferedReader reader = null;
    HttpURLConnection connexion;
    String ligne = null;
    Array primaire = null;
 
        /**
         * Creates an IntentService.  Invoked by your subclass's constructor.
         *
         * @param name Used to name the worker thread, important only for debugging.
         */
    private final static String name = "compteur";
 
 
    @Override
    public void onCreate() {
 
        while (n < 0) {
            try {
                Thread.sleep(20000);
                createNotification();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
 
 
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
       // this.binder = null;
        //this.timer.cancel();
    }
 
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    public final void createNotification(){
 
 
 
 
        try {
            ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
 
            if (networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected()) {
 
 
 
                try {
 
                    String cookies = android.webkit.CookieManager.getInstance().getCookie("http://2oclick.com/");
 
 
                    Log.d("NetworkState", "Le cookie est : " + cookies);
                    // Encodage des paramètres de la requête
                    if (cookies != null) {
 
                        String donnees = "?" + URLEncoder.encode("id", "UTF-8") + "=" + URLEncoder.encode("valeur1", "UTF-8");
                        //donnees += "&" + URLEncoder.encode("identifiant2", "UTF-8") + "=" + URLEncoder.encode("valeur2", "UTF-8");
 
                        // On a envoyé les données à une adresse distante
                        URL url = new URL("http://2oclick.com" + donnees);
                        connexion = (HttpURLConnection) url.openConnection();
                        connexion.setDoOutput(true);
                        connexion.setChunkedStreamingMode(0);
 
                        /* On envoie la requête ici
                        writer = new OutputStreamWriter(connexion.getOutputStream());
 
                        // On insère les données dans notre flux
                        writer.write(donnees);
 
                        // Et on s'assure que le flux est vidé
                        writer.flush();
                        */
                        // On lit la réponse ici
                        reader = new BufferedReader(new InputStreamReader(connexion.getInputStream()));
 
 
                        // Tant que « ligne » n'est pas null, c'est que le flux n'a pas terminé d'envoyer des informations
                        while ((ligne = reader.readLine()) != null) {
 
                            Log.d("resultat", ligne);
 
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                        /*try {
                            writer.close();
                        } catch (Exception e) {
                        }*/
                    try {
                        reader.close();
                    } catch (Exception e) {
                    }
                    try {
                        connexion.disconnect();
                    } catch (Exception e) {
                    }
 
                }
 
                if (ligne != null) {
 
                    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
                    mBuilder.setSmallIcon(R.drawable.notification);
                    mBuilder.setContentTitle("Titre de la notification");
                    mBuilder.setContentText("Texte de la notification");
                    mBuilder.setAutoCancel(true);
                    mBuilder.setVibrate(new long[]{1000, 1000});
                    mBuilder.setLights(Color.WHITE, 1000, 1000);
// Creates an explicit intent for an Activity in your app
                    Intent resultIntent = new Intent(this, MainActivity.class);
 
// The stack builder object will contain an artificial back stack for the
// started Activity.
// This ensures that navigating backward from the Activity leads out of
// your application to the Home screen.
                    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
// Adds the back stack for the Intent (but not the Intent itself)
                    stackBuilder.addParentStack(MainActivity.class);
// Adds the Intent that starts the Activity to the top of the stack
                    stackBuilder.addNextIntent(resultIntent);
 
                    PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(
                            compteur,
                            PendingIntent.FLAG_UPDATE_CURRENT
                    );
                    mBuilder.setContentIntent(resultPendingIntent);
                    NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                    //mNotificationManager.setAutoCancel();
// mId allows you to update the notification later on.
                    //mNotificationManager.ledARGB = color.RED;
                    mNotificationManager.notify(compteur, mBuilder.build());
                    compteur++;
                }
            }
 
        }
         catch (Exception e) {
             e.printStackTrace();
        }
    }
 
}