返回顶部
首页 > 资讯 > 精选 >Android中怎么利用JobScheduler定期推送本地通知
  • 943
分享到

Android中怎么利用JobScheduler定期推送本地通知

androidjobscheduler 2023-05-31 00:05:26 943人浏览 独家记忆
摘要

这篇文章给大家介绍Android中怎么利用JobScheduler定期推送本地通知,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Android5.0之后提供了JobService和JobScheduler,用于在稍后

这篇文章给大家介绍Android中怎么利用JobScheduler定期推送本地通知,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Android5.0之后提供了JobService和JobScheduler,用于在稍后的某个时间点或者当满足某个特定的条件时执行一个任务。使用JobScheduler,我们可以在用户一段时间没有使用我们的app的情况下,推送本地通知来提高app的用户留存率。废话不多说,上代码:

先在app的MainActivity启动时用JobScheduler来schedule一个job。注意在onCreate中我们把用户启动app的时间记录在了shared preference里面:

@Overrideprotected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  sharedPreferences.edit().putLong(Constants.SP_PARAM_LAST_LAUNCH, System.currentTimeMillis()).apply();  scheduleNotifications();}private void scheduleNotifications() {    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {      try {        JobScheduler jobScheduler = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);        JobInfo jobInfo = new JobInfo.Builder(1, new ComponentName(getPackageName(), NotificationService.class.getName()))            .setRequiresCharging(false)            .setRequiredNetworkType(JobInfo.netWORK_TYPE_ANY) //任何有网络的状态            .setPersisted(true) //系统重启后保留job            .setPeriodic(1000 * 60 * 60 * 24) //这里的单位是毫秒,1000 * 60 * 60 * 24代表一天(24小时)            .build();        jobScheduler.schedule(jobInfo);      } catch (Exception ex) {        Log.e("scheduleNotifications failure");      }    }  }

然后是推送通知的NotificationService,这里SharedPreferences是用的dagger2依赖注入,不用dagger的可以直接用PreferenceManager.getDefaultSharedPreferences来获得:

@Requiresapi(api = Build.VERSION_CODES.LOLLIPOP)public class NotificationService extends JobService {  @DefaultSharedPref  @Inject  SharedPreferences sharedPreferences;  @Override  public boolean onStartJob(JobParameters params) {    try {      long lastLaunchTime = sharedPreferences.getLong(Constants.SP_PARAM_LAST_LAUNCH, -1);      if(lastLaunchTime > 0) {        long intervalSinceLastLaunch = System.currentTimeMillis() - lastLaunchTime;        //检查距离用户上一次启动app是否过了一定时间        if(intervalSinceLastLaunch > 1000 * 60 * 60 * 24) {              NotificationCompat.Builder mBuilder =                  new NotificationCompat.Builder(NotificationService.this)                      .setAutoCancel(true)                      .setSmallIcon(R.mipmap.ic_launcher)                      .setContentTitle("我的app")                      .setContentText("又有新的内容上线了,快来我们app看看吧!");              Intent resultIntent = new Intent(NotificationService.this, MainActivity.class);              TaskStackBuilder stackBuilder = TaskStackBuilder.create(NotificationService.this);              stackBuilder.addParentStack(MainActivity.class);              stackBuilder.addNextIntent(resultIntent);              PendingIntent resultPendingIntent =                  stackBuilder.getPendingIntent(                      0,                      PendingIntent.FLAG_UPDATE_CURRENT                  );              mBuilder.setContentIntent(resultPendingIntent);              NotificationManager mNotificationManager =                  (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);              mNotificationManager.notify(1, mBuilder.build());        }      }    } catch (Exception ex) {      Log.e("Exception in NotificationService onStartJob");    }    return false;  }  @Override  public boolean onStopJob(JobParameters params) {    Log.d("NotificationService onStopJob");    return true;  }}

最后需要在Manifest中注册我们的service和申请相关的权限:

  <uses-permission android:name="android.permission.INTERNET" />  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />  <service android:name=".NotificationService"      android:permission="android.permission.BIND_JOB_SERVICE" />

关于Android中怎么利用JobScheduler定期推送本地通知就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: Android中怎么利用JobScheduler定期推送本地通知

本文链接: https://lsjlt.com/news/222461.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android中怎么利用JobScheduler定期推送本地通知
    这篇文章给大家介绍Android中怎么利用JobScheduler定期推送本地通知,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Android5.0之后提供了JobService和JobScheduler,用于在稍后...
    99+
    2023-05-31
    android jobscheduler
  • 本地推送通知UserNotifications在Swift中的实现方式
    目录简介笔者环境权限获取触发器UNTimeIntervalNotificationTriggerUNCalendarNotificationTriggerUNLocationNoti...
    99+
    2024-04-02
  • Win8怎么启用推送通知功能
    这篇文章主要为大家展示了“Win8怎么启用推送通知功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Win8怎么启用推送通知功能”这篇文章吧。具体操作方法如下:在开始屏幕下,将鼠标移至屏幕右下角...
    99+
    2023-06-27
  • 怎么使用Spring Boot+Vue实现Socket通知推送
    本篇内容主要讲解“怎么使用Spring Boot+Vue实现Socket通知推送”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Spring Boot+Vue实现Soc...
    99+
    2023-07-05
  • 怎么使用SAP云平台的Notification服务给Android应用推送通知消息
    今天就跟大家聊聊有关怎么使用SAP云平台的Notification服务给Android应用推送通知消息,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。登录SAP Cloud Platf...
    99+
    2023-06-03
  • 怎么在Android中利用SmsManager发送短信
    本篇文章给大家分享的是有关怎么在Android中利用SmsManager发送短信,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。关键代码实现package com.ex...
    99+
    2023-05-30
    android smsmanager
  • 怎么在Android中利用google实现一个消息通知功能
    怎么在Android中利用google实现一个消息通知功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 定义一个派生于WakefulBroadcastReceiver的类pu...
    99+
    2023-05-31
    android google roi
  • Android中怎么打开本地应用
    Android中怎么打开本地应用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、在html中设置链接 代码如下:href=”[scheme]...
    99+
    2024-04-02
  • Android中怎么使用本地广播
    这篇文章给大家介绍Android中怎么使用本地广播,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MainActivity代码package com.example.luobo.mybroadcastrecei...
    99+
    2023-05-30
    android
  • 怎么在Android中利用Intent发送广播消息
    这篇文章给大家介绍怎么在Android中利用Intent发送广播消息,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Android Intent发送广播消息Intent的另一种用途是发送广播消息,应用程序和Android...
    99+
    2023-05-31
    android intent roi
  • 利用Android怎么搭建一个本地Tomcat服务器
    今天就跟大家聊聊有关利用Android怎么搭建一个本地Tomcat服务器,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、 Tomcat的下载在Tomcat官网下载这里下载的是Tom...
    99+
    2023-05-31
    android tomcat omc
  • Android中怎么使用AlarmManager和Notification实现定时通知提醒功能
    这期内容当中小编将会给大家带来有关Android中怎么使用AlarmManager和Notification实现定时通知提醒功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。AlarmManager简介A...
    99+
    2023-05-30
    android alarmmanager notification
  • 利用Android怎么编写一个本地音乐播放器
    利用Android怎么编写一个本地音乐播放器?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。音乐播放需要调用service,在此,只是简单梳理播放流程。public class ...
    99+
    2023-05-31
    android roi
  • Android中怎么利用socketpair实现双向通信
    Android中怎么利用socketpair实现双向通信,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。进程:负责读取和分发事件2、应用程序:负责处理输入事件上面这两个进程会...
    99+
    2023-05-30
    socketpair android
  • FineReport中怎么利用JavaScript自定义地图标签
    这期内容当中小编将会给大家带来有关FineReport中怎么利用JavaScript自定义地图标签,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 <span >'+ FR.cont...
    99+
    2023-06-04
  • HTML5 中怎么利用Video/Audio播放本地文件
    这期内容当中小编将会给大家带来有关HTML5 中怎么利用Video/Audio播放本地文件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。代码如下:<html>...
    99+
    2024-04-02
  • Android应用中怎么实现通知栏闪动效果
    Android应用中怎么实现通知栏闪动效果?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。显示通知代码:private void showNotification(Context...
    99+
    2023-05-31
    android roi
  • 怎么从android中跳转到应用通知设置界面
    这篇文章主要介绍了怎么从android中跳转到应用通知设置界面,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:Android是什么Android是一种基于Linux内核的自由及开放源代码的...
    99+
    2023-05-30
    android
  • linux中怎么利用find命令实现日志定期迁移
    linux中怎么利用find命令实现日志定期迁移,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一,find命令格式find  pathname&nbs...
    99+
    2023-06-13
  • 利用Java怎么将本地文件显示在JSP文件中
    今天就跟大家聊聊有关利用Java怎么将本地文件显示在JSP文件中,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。具体代码如下:    <img na...
    99+
    2023-05-31
    java ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作