Bonjour à tous,
j'ai une activité qui lance un service, lequel effectue des taches en background.
ACTIVITE :
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 ... public class MainActivity extends Activity { MyService myService; ServiceConnection myServiceConnection; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.application); //Connexion au service myServiceConnection = new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName name) { myService = null; } @Override public void onServiceConnected(ComponentName name, IBinder service) { myService = ((MyService.MyActivityBinder)service).getMyService(); //Méthode lancée lorsque le service est connecté onServiceAvailable(); } }; Intent serviceIntent = new Intent(this, MyService.class); startService(serviceIntent); Intent bindIntent = new Intent(this, MyService.class); bindService(bindIntent, myServiceConnection, Context.BIND_AUTO_CREATE); } public void onServiceAvailable() { //MISE A JOUR DE L'INTERFACE ((TextView) findViewById(R.id.valeur_adresse)).setText(String.valueOf(myService.exampleDeVariableAEcouter)); } }
Lors du lancement de l'application, l'interface est bien mise à jour, mais une seule fois. La variable exampleDeVariableAEcouter change au cours du traitement et j'aimerais que l'interface puisse se mettre à jour dès qu'elle repère une modification de la variable.
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 ... public class MyService extends Service { //Déclaration des variables String exampleDeVariableAEcouter = 0; MyService myServiceS; private IBinder myBinder = new MyActivityBinder(); public class MyActivityBinder extends Binder { MyService getMyService() { return MyService.this; } } @Override public IBinder onBind(Intent intent) { return myBinder; } @Override public void onCreate() { super.onCreate(); //Lancement du thread de traitement thread th = new thread(); th.execute(); } public int onStartCommand(Intent intent, int flags, int startId) { return START_STICKY_COMPATIBILITY; } //Méthode pour lancer le traitement des données class thread extends AsyncTask<Void, String, Void> { @Override protected Void doInBackground(Void... inutilise) { while(true) { //MODIFICATION DES VALEURS DE LA VARIABLE exampleDeVariableAEcouter try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } return(null); } @Override protected void onProgressUpdate(String... item) { } @Override protected void onPostExecute(Void inutilise) { } } }
J'ai suivi le tuto de nicodr23 à la lettre (ici : http://blog.developpez.com/android23...ion_de_service), mais j'ai une erreur avec
( IGoogleWeatherListener cannot be resolved to a type)
Code : Sélectionner tout - Visualiser dans une fenêtre à part listeners = new ArrayList<IGoogleWeatherListener>();
Quelqu'un aurait une idée ? Je galère depuis 3 jours dessus.
Merci d'avance....
Partager