IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android之Notification的使用 -> 正文阅读

[移动开发]Android之Notification的使用

前台服务

一个Service不管是被启动或是被绑定,默认是运行在后台的。有一种特殊的服务叫前台服务,是一种能被用户意识到它存在的服务,默认是不会被系统自动销毁的,但是必须提供一个状态栏Notification,在通知栏放置一个持续的标题。这个Notification 是不能被忽略的,除非服务被停止或从前台删除。这类服务主要用于一些需要用户能意识到它在后台运行并且随时可以操作的业务,如音乐播放器,设置为前台服务,使用一个Notification 显示在通知栏,可以使用户切歌或是暂停之类的。

前台服务与普通服务的定义规则是一样的,也需要继承 Service,这里没有区别,唯一的区别是在服务里需要使用 Service.startForeground(int id,Notification notification)方法设置当前服务为一个前台服务,并为其制定 Notification。其中的参数 id 是一个唯一标识通知的整数,但是这里注意这个整数一定不能为0,notification为前台服务的通知,并且这个 notification 对象只需要使用 startForeground()方法设置即可。前台服务可以通过调用 stopForeground(true)来使当前服务退出前台,但是并不会停止服务。

有一点需要注意,startForeground()需要在Android 2.0之后的版本才生效,在这之前的版本使用setForeground()来设置前台服务,并且需要NotificationManager 对象来管理通知,但是现在市面上基本上已经很少有2.0或以下的设备了,所以也不用太在意。

通过上面的介绍,会发现前台服务和 Notification 具有很强的关联,所以在讲解前台服务之前先对Noification进行简单的介绍,关于通知的更多内容,将在多媒体内容进行讲解。

?Notification 简介与使用

因为 Android 的快速发展(版本快速升级)出现了一些兼容性的问题。对于Notification 而言,Android 3.0 是一个分水岭,在其之前构建 Notification 推 荐使用NotificationCompate.Builder,是一个 Android向下版本的兼容包,而在 Android 3.0之后,一般推荐使用NotificationCompat.Builder方式构建。本文将使用 NotficationCompat.Builder方式构建 Notification。对于一个简单的通知,只需要设置下面几个属性即可∶

● 小图标,使用 setSmallIcon()方法设置。

● 标题,使用 setContentTitle()方法设置。

● 文本内容,使用 setContentText()方法设置。

当然,在使用通知时,一般情况下点击该通知能够执行指定的意图,这是使用 Pendinglntent 类来实现的,详细的内容也将在多媒体一章的 Notification 一节中讲述,这里只要能够看懂即可。

下面通过一个简单的实例让读者能够更直观地感受 Notification 是如何使用的。新建一个MainActivity,代码如下∶

package com.rfstar.notificationtest;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {
    private Notification notification;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        //高版本的模拟器或手机还需要开启渠道才能显示通知
        NotificationChannel notificationChannel=null;
        NotificationManager	notificationManager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
        if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){
            notificationChannel=new NotificationChannel("001","channel_name",NotificationManager.IMPORTANCE_HIGH);
        notificationManager.createNotificationChannel(notificationChannel);
        }
        NotificationCompat.Builder	builder=new NotificationCompat.Builder(MainActivity.this,"001");
        //实例化一个意图,当点击通知时会跳转执行这个意图
        Intent intent = new Intent(this, MainActivity.class);
        //将意图进行封装
        PendingIntent	pendingIntent= PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_CANCEL_CURRENT);
        //设置Notification的点击之后执行的意图
        builder.setContentIntent(pendingIntent);
        builder.setSmallIcon(R.mipmap.ic_launcher);
        builder.setContentTitle("酷我音乐");
        builder.setContentText("正在播放的音乐:两只老虎");
        notification = builder.build();
        notificationManager.notify(0,notification);
   }
}

运行程序,打开通知栏,会出现一条通知,效果如下图所示。点击此通知将会跳转到MainActivity中

?

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-20 18:30:36  更:2021-11-20 18:32:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:27:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码