Android 通知栏消息
通知栏消息是Android的一个最成功的发明,的确给用户带来很好的体验。 主要用到的类有NotificationManager。是用来管理提醒的。 还有PendingIntent用来指定点击后跳转的。 现在公司的需求就是:需要检查服务端有没有消息要推送,每次打开软件都去检查太消耗了,所以我的策略是每天第一次打开软件时去检测,这一天后来再打开软件就不检测了。 看代码吧: /** * 是否需要检查通知栏提示 * @return */ private boolean isNeedNotify(){ SharedPreferences share = getSharedPreferences(SHARE_APP_TAG, Context.MODE_PRIVATE); String notifyDate = share.getString(MAP_NOTIFY_DATE, ""); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式 String dateStr = df.format(new Date()); if(dateStr.equals(notifyDate)){ return false;} else{return true;}} 上面这段代码是检查今天有没有检查过。 if(isNeedNotify()){ //如果需要检查通知栏提示的话,3秒之后去检查 new Timer().schedule(new TimerTask() { @Override public void run() { createNotify(); } }, 3000); } 上面这段代码是判断是否需要检查,如果需要的话,3秒钟之后开始检查。 //创建通知栏信息 private void createNotify(){ putNotifyDate(); Log.i("notify=====", "notify"); init(); //新建状态栏通知 baseNF = new Notification(); //设置通知在状态栏显示的图标 baseNF.icon = R.drawable.icon_01; //通知时在状态栏显示的内容 baseNF.tickerText = "纵横通知消息"; //通知被点击后,自动消失 baseNF.flags |= Notification.FLAG_AUTO_CANCEL; //第二个参数 :下拉状态栏时显示的消息标题 expanded message title //第三个参数:下拉状态栏时显示的消息内容 expanded message text //第四个参数:点击该通知时执行页面跳转 baseNF.setLatestEventInfo(ListViewActivity.this, "标题", "内容", pd); //发出状态栏通知 nm.notify(Notification_ID_BASE, baseNF); } 为了方便,我暂时用本地数据代替到服务器获取数据。上面的代码是创建状态栏通知。 /** * 初始化状态栏通知 */ private void init(){ nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); Intent intent = new Intent(this,ListViewActivity.class); pd = PendingIntent.getActivity(ListViewActivity.this, 0, intent, 0); } 上面的代码是初始化一些状态栏通知需要的 /** * 将发出检查通知的时间存入文件 */ private void putNotifyDate(){ SharedPreferences share = getSharedPreferences(SHARE_APP_TAG, 0); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式 String dateStr = df.format(new Date()); share.edit().putString(MAP_NOTIFY_DATE,dateStr).commit(); } 上面的代码是将发出检查通知的时间存入文件,以备后来每次判断。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。