3

Несмотря на то, что этот вопрос, возможно, был задан до переполнения стека, я до сих пор не нашел четкого ответа.Как показывать уведомление каждый день в определенное время, даже когда приложение закрыто?

Я хочу показать уведомление каждый день в 12 часов, например, даже когда приложение закрыто. Я ссылаюсь на эти ссылки: Notifications in specific time every day android, Android daily repeating notification at specific time of a day using AlarmManager, Android BroadcastReceiver on startup - keep running when Activity is in Background и многое другое ... Я смущен различием между сервисом и BroadcastReceiver. Какой из них я должен использовать? или я должен использовать их оба?

До сих пор я знаю, как показывать уведомление, но я не знаю, как показывать его автоматически каждый раз, когда приложение закрыто.

Мой код:

public class NotifyService extends Service { 

    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Toast.makeText(this, "Service created", Toast.LENGTH_LONG).show(); 

     Intent resultIntent = new Intent(this, HomeScreen.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0, resultIntent, 0); 

     Notification.Builder notification = new Notification.Builder(this) 
       .setSmallIcon(R.mipmap.ic_launcher) 
       .setContentTitle("App Title") 
       .setContentText("Some Text...") 
       .setContentIntent(resultPendingIntent); 

     NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     if (Build.VERSION.SDK_INT < 16) { 
      notificationManager.notify(1, notification.getNotification()); 
     } else { 
      notificationManager.notify(1, notification.build()); 
     } 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     Toast.makeText(this, "Service destroyed", Toast.LENGTH_LONG).show(); 
    } 
} 

AppManifest.xml:

<service android:name=".NotifyService" /> 

Как я должен написать свой код, чтобы добиться того, чего я хочу? Любые предложения или любая хорошая ссылка, о которой я могу понять?

ответ

9

Если вы правильно поняли, я считаю, что вам нужно настроить повторяющийся сигнал тревоги, используя AlarmManager. Вам также необходимо настроить запуск службы будильника при перезагрузке устройства. Вы можете написать метод, который делает то, что вы хотите, чтобы он выполнялся при срабатывании будильника, например. показать notification. Следующие ссылки должны помочь вам:

+0

Спасибо. Я посмотрю на них и отвечу вам. –

+0

Вторая ссылка решила мою проблему. Мне пришлось использовать BroadcastReceiver вместо Службы. Спасибо за помощь. –

+0

Добро пожаловать! Я рад, что смог помочь. –