2019-11-22 Notification(通知服务)的实例

NotificationManage是Android中的一个系统服务组件。

可将通知对象发送到系统ActionBar上。

该组件的主要作用是通知用户事件的发生,方法主要有三种:

在状态栏中出现一个图标

设备LED灯闪烁

播放音乐或者是振动


Android提供NotificationManager组件,负责与system_server进行交互

NotificationManager notification=(NotificationManager) getSystemService(NOTIFICATION_SERVICE);//android提供Android服务的代码。

Notification常用的方法:

//取消之前显示的一个通知

public void cancel(int id)

//取消之前显示的所有通知

public void cancelAll()

//将通知发送到状态栏上

public void notify(int id, Notification notification)(id代表识别符)

manager.notify(1, notification);



Notification设置服务的代码:

Notification notification=new Notification.Builder ( MainActivity.this).setContentIntent ( pendingIntent ).setContentTitle ("放假通知" ).setContentText ("明天不用上课" ).setWhen ( System.currentTimeMillis () ).setSmallIcon ( R.mipmap.ic_launcher ).build ();

manager.notify (1,notification );



通知 查看的实现通过PendingIntent来实现:

Intent 是意图的意思。Android 中的 Intent 正是取自这个意思,它是一个消息对象,通过它,Android 系统的四大组件能够方便的通信,并且保证解耦。

Intent 可以说明某种意图,携带一种行为和相应的数据,发送到目标组件。

PendingIntent是对Intent的封装,但它不是立刻执行某个行为,而是满足某些条件或触发某些事件后才执行指定的行为(关于PendingIntent的使用场景主要用于闹钟、通知、桌面部件).



关于PendingIntent的实例获取一般有以下五种方法,分别对应Activity、Broadcast、Service

getActivity()

getActivities()

getBroadcast()

getService()

getForegroundService()

它们的参数都相同,都是四个:Context, requestCode, Intent, flags,分别对应上下文对象、请求码、请求意图用以指明启动类及数据传递、关键标志位


接下来上我自身的源代码:

package com.mingrisoft.notification;

import android.app.Notification;

import android.app.NotificationManager;

import android.app.PendingIntent;

import android.content.Intent;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.View;

import android.widget.Button;

public class MainActivityextends AppCompatActivityimplements View.OnClickListener {

private Notification notification;

private Button mSent;

@Override

    protected void onCreate(Bundle savedInstanceState) {

super.onCreate ( savedInstanceState );

setContentView ( R.layout.activity_main );

initView ();

}

private void initView() {

mSent = (Button) findViewById ( R.id.sent );

mSent.setOnClickListener (this );

}

@Override

    public void onClick(View v) {

switch (v.getId ()) {

case R.id.sent:

Intent intent=new Intent ( MainActivity.this,NotificationMainActivity.class );

PendingIntent pendingIntent=PendingIntent.getActivity ( MainActivity.this,0,intent,0 );

NotificationManager manager=(NotificationManager)getSystemService (NOTIFICATION_SERVICE );

Notification notification=new Notification.Builder ( MainActivity.this).setContentIntent ( pendingIntent ).setContentTitle ("放假通知" ).setContentText ("明天不用上课" ).setWhen ( System.currentTimeMillis () ).setSmallIcon ( R.mipmap.ic_launcher ).build ();

//设置Builder的构造器,通知标题,通知内容,通知时间,通知大小图标。

manager.notify (1,notification );

break;

default:

break;

}

}

}


在一个button中实现Intent意图,设置Notification服务(需要设置Notification的构造器,通知标题,通知内容,通知图标)与其NotificationManager组件


再创建NotificationMainActivity,设置Notification的服务,并设置取消前一个通知的功能


package com.mingrisoft.notification;

import android.app.NotificationManager;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

public class NotificationMainActivityextends AppCompatActivity {

@Override

    protected void onCreate(Bundle savedInstanceState) {

super.onCreate ( savedInstanceState );

setContentView ( R.layout.activity_notification_main );

NotificationManager manager=(NotificationManager)getSystemService (NOTIFICATION_SERVICE );

manager.cancel (1 );//设置取消之前显示的通知

}

}



2019-11-22 Notification(通知服务)的实例_第1张图片

运行结果展示图:

2019-11-22 Notification(通知服务)的实例_第2张图片

你可能感兴趣的:(2019-11-22 Notification(通知服务)的实例)