我知道这个问题有很多问题,我几乎看到所有问题,但我无法解决我的问题。我有一个使用本地广播管理器调用主要活动的服务,我从该服务获得一些价值,然后将它们放入字符串并发送到需要使用它们的其他服务。这些服务之一被称为本地广播,但其中两个在按钮监听器中,我使用警报管理器每隔1分钟重复运行它们,同时我在第一个服务中使用satrtforeground()调用主要活动,但在某些设备中奇怪地使用设备屏幕下车或用户从后台(从堆栈)清除应用程序不起作用。我希望你能帮助我,谢谢当应用程序完全关闭时,我的服务不工作
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));
}
注:由于编辑代码这里也许有些括号不是真的,忽略他们感谢
号:((仍然是相同的,当然,正如我以前说过的一些设备不huwaie设备 – hdiz