如何在Android Studio中使用后台服务发送通知?

时间:2019-04-16 18:33:23

标签: java android notifications

我想在我的应用程序中发送推送通知,但几分钟后android杀死了我的后台服务,并且通知未显示。如何使后台服务无法关闭哪个Android?

BackroundService.class

public Context context = this;
public android.os.Handler handler  = new Handler();
public static Runnable runnable = null;

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

@Override
public void onCreate() {
    Log.e("Service", "Service crated!");

    runnable = new Runnable() {
        public void run() {
            Log.e("Service", "Service is still running!");
            Toast.makeText(context, "Service is still running", Toast.LENGTH_SHORT).show();
            handler.postDelayed(runnable, 50000);
        }
    };

    handler.postDelayed(runnable, 15000);
}

@Override
public void onDestroy() {

}

@Override
public void onStart(Intent intent, int startid) {
    Log.e("Service", "Service started by user!");
}

AlarmReceiver.class

@Override
public void onReceive(Context context, Intent intent) {

    int notificationId = intent.getIntExtra("ID", 0);
    String message = intent.getStringExtra("TEXT");
    String tittle = intent.getStringExtra("TITTLE");

    Intent mainIntent = new Intent(context, BackgroundService.class);
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, mainIntent, 0);

    NotificationManager notificationManager =
            (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification.Builder builder = new Notification.Builder(context);
    builder.setSmallIcon(R.drawable.finance43)
            .setContentTitle(tittle)
            .setContentText(message)
            .setWhen(System.currentTimeMillis())
            .setAutoCancel(true)
            .setContentIntent(contentIntent)
            .setPriority(Notification.PRIORITY_HIGH)
            .setCategory(Notification.CATEGORY_MESSAGE);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        String channelId = "REMINDERS";
        NotificationChannel channel = new NotificationChannel(channelId,
                "Reminder",
                NotificationManager.IMPORTANCE_DEFAULT);
        notificationManager.createNotificationChannel(channel);
        builder.setChannelId(channelId);
    }
    notificationManager.notify(notificationId, builder.build());
}

启动应用程序时,我看到“服务仍在运行!”大约一个小时。

0 个答案:

没有答案