0
我正在開發一個應用程序,每天通知報警管理器,它的工作很好,但我有一個問題,在設備重啓我已經建立Boot_Complete廣播接收器,但我想這個廣播檢查服務,如果它是在重新啓動之前運行或未運行。 這是我MainActivity.java引導完成廣播接收機
public void startMorning()
{
AlarmManager morningAlarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent morningIntent = new Intent(AutoAzkarSetting.this,MorningReciver.class);
morningIntent.putExtra("numCheck",1);
moPending = PendingIntent.getBroadcast(AutoAzkarSetting.this, 0, morningIntent, 0);
Calendar morningCalender = Calendar.getInstance();
morningCalender.setTimeInMillis(System.currentTimeMillis());
morningCalender.set(Calendar.HOUR_OF_DAY, 8);
morningAlarm.setRepeating(AlarmManager.RTC_WAKEUP,morningCalender.getTimeInMillis()+12*60*60*1000,AlarmManager.INTERVAL_DAY,moPending);
Toast.makeText(this,"Morning Alarm Set",Toast.LENGTH_LONG).show();
}
,這是MorningReceiver.java
public class MorningReciver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent morIntent = new Intent(context, MorningService.class);
context.startService(morIntent);
}
}
,這是MorningService.java
public class MorningService extends Service {
WindowManager windowManager ;
WindowManager.LayoutParams params , params2;
ImageView azkarHead , closeHead;
int morId ;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
String morningContent = this.getResources().getString(R.string.notyContent);
String morningSub = this.getResources().getString(R.string.moevSub);
Uri MorningSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
final NotificationManager morningManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
final Notification morningNotification = new NotificationCompat.Builder(this)
.setContentTitle("Morning")
.setContentText(morningContent)
.setSubText(morningSub)
.setSmallIcon(R.drawable.ic_launcher)
.setSound(MorningSound)
.setAutoCancel(false)
.build();
morningManager.notify(morId, morningNotification);
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
azkarHead = new ImageView(this);
azkarHead.setImageResource(R.drawable.ic_launcher);
params = new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_PHONE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT);
params.gravity = Gravity.TOP | Gravity.RIGHT;
params.x = 0;
params.y = 150;
windowManager.addView(azkarHead, params);
azkarHead.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent morningIndex = new Intent(getBaseContext(), AzkarList.class);
morningIndex.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
morningIndex.putExtra("azkarHeadIndex", 0);
startActivity(morningIndex);
windowManager.removeView(azkarHead);
windowManager.removeView(closeHead);
morningManager.cancel(morId);
}
});
closeHead = new ImageView(this);
closeHead.setImageResource(R.drawable.ic_clear_white);
params2 = new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_PHONE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT);
params2.gravity = Gravity.TOP | Gravity.RIGHT;
params2.x = 10;
params2.y = 260;
windowManager.addView(closeHead, params2);
closeHead.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
windowManager.removeView(azkarHead);
windowManager.removeView(closeHead);
morningManager.cancel(morId);
}
});
startForeground(morId, morningNotification);
return START_STICKY;
}
所以是有任何想法如何做到這一點?????
感謝您的回答,但是當設備重新啓動時,即使用戶正在運行該服務也會銷燬,並且會保存錯誤的值並且不會再運行 – khaledsamer