Je sais qu'il y a beaucoup de questions sur ce problème et j'ai vu presque tous, mais je ne peux pas résoudre mon problème. J'ai un service qui appelle l'activité principale en utilisant le gestionnaire de diffusion locale, je reçois une certaine valeur de ce service et puis je les mets en chaîne et envoyer dans d'autres services qui ont besoin de les utiliser. un de ces services appelé en diffusion locale mais deux d'entre eux dans un bouton d'écoute, j'utilise le gestionnaire d'alarme pour les exécuter à chaque fois 1 minute, aussi j'utilise satrtforeground() dans le premier service qui appelle l'activité principale, mais étrangement dans certains appareils écran descend ou utilisateur nettoyer l'application de l'arrière-plan (de la pile) les services ne fonctionnent pas. J'espère que vous pouvez me aider, Mercimes services ne fonctionnent pas lorsque l'application est complètement fermée
public class ServiceURL extends Service {
public static final String Service = ServiceURL.class.getName() + "LocationBroadcast";
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Notification note = new Notification(0, null, System.currentTimeMillis());
note.flags |= Notification.FLAG_NO_CLEAR;
startForeground(42, note);
// some codee
Intent i = new Intent(Service);
i.putExtra("Sobh",prayerTimes.get(0).toString());
i.putExtra("Sunrise",prayerTimes.get(1).toString());
i.putExtra("Zohr",prayerTimes.get(2).toString());
i.putExtra("Asr",prayerTimes.get(3).toString());
i.putExtra("Sunset",prayerTimes.get(4).toString());
i.putExtra("Maghreb",prayerTimes.get(5).toString());
i.putExtra("Isha",prayerTimes.get(6).toString());
sendBroadcastMessage(i);
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public void onCreate() {
super.onCreate();
}
private void sendBroadcastMessage(Intent intent) {
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
}
}
MainActivity.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// some code
LocalBroadcastManager.getInstance(this).registerReceiver(
new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Sobh = intent.getStringExtra("Sobh");
Sunrise = intent.getStringExtra("Sunrise");
Zohr = intent.getStringExtra("Zohr");
Sunset = intent.getStringExtra("Sunset");
Maghreb = intent.getStringExtra("Maghreb");
Asr = intent.getStringExtra("Asr");
Isha = intent.getStringExtra("Isha");
Log.d("Sobh in main", Sobh);
Intent i = new Intent(getApplicationContext(), ServiceAzan.class);
i.putExtra("SOBH", Sobh.substring(0, 5));
i.putExtra("ZOHR", Zohr.substring(0, 5));
i.putExtra("MAGHREB", Maghreb.substring(0, 5));
i.putExtra("ASR", Asr.substring(0, 5));
i.putExtra("ISHA", Isha.substring(0, 5));
PendingIntent pintent = PendingIntent.getService(getApplicationContext(), 0, i, 0);
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),60 * 1000, pintent);
// String timestamp = intent.getStringExtra("Date");
SobhText.setText(Sobh.substring(0, 5));
SunriseText.setText(Sunrise.substring(0, 5));
ZohrText.setText(Zohr.substring(0, 5));
SunsetText.setText(Sunset.substring(0, 5));
MaghrebText.setText(Maghreb.substring(0, 5));
AsrText.setText(Asr.substring(0, 5));
IshaText.setText(Isha.substring(0, 5));
Log.d("sobh text .....", SobhText.getText().toString());
Log.d("change value before",beforepick+"");
Log.d("change value after",afterpick+"");
TimeChanging.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// some code
Intent intentBA = new Intent(getApplicationContext(), ServiceSetTime.class);
Intent sms = new Intent(getApplicationContext(), SmsService.class);
intentBA.putExtra("SOBH", Sobh.substring(0, 5));
intentBA.putExtra("ZOHR", Zohr.substring(0, 5));
intentBA.putExtra("MAGHREB", Maghreb.substring(0, 5));
intentBA.putExtra("ASR", Asr.substring(0, 5));
intentBA.putExtra("ISHA", Isha.substring(0, 5));
PendingIntent pintentBA = PendingIntent.getService(getApplicationContext(), 0, intentBA, 0);
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 30 * 1000, pintentBA);
sms.putExtra("SOBH", Sobh.substring(0, 5));
sms.putExtra("ZOHR", Zohr.substring(0, 5));
sms.putExtra("MAGHREB", Maghreb.substring(0, 5));
sms.putExtra("ASR", Asr.substring(0, 5));
sms.putExtra("ISHA", Isha.substring(0, 5));
PendingIntent pintentsms = PendingIntent.getService(getApplicationContext(), 0, sms, 0);
AlarmManager alarmsms = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmsms.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 60 * 1000, pintentsms);
// some code
});
}
}, new IntentFilter(ServiceURL.Service)
);
}
});
}
}
@Override
protected void onResume() {
super.onResume();
startService(new Intent(this, ServiceURL.class));
}
@Override
protected void onPause() {
super.onPause();
// stopService(new Intent(this, ServiceURL.class));
}
REMARQUE: en raison de l'édition de code ici peut-être une parenthèse pas vrai, les ignorer Merci
pas: ((toujours le même, bien sûr, comme je l'ai dit dans certains appareils ne fonctionnent pas tous, par exemple dans le dispositif de huwaie – hdiz