通知栏构建和取消的基本认识

思路图

MainActivity.class
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    NotificationManager manager;
    int notification_ID = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         findViewById(R.id.send_message).setOnClickListener(this);
         findViewById(R.id.cancel_message).setOnClickListener(this);
        manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);  //取得通知控制类

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.send_message:{
                send_message_method();
                break;
            }
            case R.id.cancel_message:{
                cancel_message_method();
                break;
            }
        }
    }

    //构建发送通知方法
    private void cancel_message_method() {
        manager.cancel(notification_ID);
    }
    //取消通知栏
    private void send_message_method() {

        Intent itent = new Intent(this,MainActivity.class);
        PendingIntent pitent = PendingIntent.getActivity(this,0,itent,0);
        //构建Notification的builder构建器
        Notification.Builder builder = new Notification.Builder(this);
        builder.setSmallIcon(R.mipmap.ic_launcher);     //设置图标
        builder.setTicker("你好,世界!");   //设置手机状态栏提示信息
        builder.setWhen(System.currentTimeMillis());    // 设置时间
        builder.setContentTitle("世界游戏之标题");     //设置标题
        builder.setContentText("鹅鹅鹅,曲项向天歌!");   //设置通知内容

        builder.setContentIntent(pitent); //设置点击后的意图
//        builder.setDefaults(Notification.DEFAULT_LIGHTS);//设置提示指示灯
//        builder.setDefaults(Notification.DEFAULT_SOUND);//设置提示声音
//        builder.setDefaults(Notification.DEFAULT_VIBRATE);//设置提示震动
        builder.setDefaults(Notification.DEFAULT_ALL);  //设置全部都有
        Notification notification =  builder.build();//4.1以上
        manager.notify(notification_ID,notification);

    }
}

 注意设置Defaults时候的权限。振动,声音权限。

<uses-permission android:name="ANDROID.PERMISSION.FLASHLIGHT" /><uses-permission android:name="android.permission.VIBRATE"/>

时间: 2025-01-06 01:54:14

通知栏构建和取消的基本认识的相关文章

&lt;&lt;java 并发编程&gt;&gt;第七章:取消和关闭

Java没有提供任何机制来安全地终止线程,虽然Thread.stop和suspend等方法提供了这样的机制,但是存在严重的缺陷,应该避免使用这些方法.但是Java提供了中断Interruption机制,这是一种协作机制,能够使一个线程终止另一个线程的当前工作. 这种协作方式是必要的,我们很少希望某个任务线程或者服务立即停止,因为这种立即停止会时某个共享的数据结构处于不一致的状态.相反,在编写任务和服务的时候可以使用一种协作方式:当需要停止的时候,它们会先清除当前正在执行的工作,然后再结束. 7.

[Java Concurrency in Practice]第七章 取消与关闭

取消与关闭 要使任务和线程能安全.快速.可靠地停止下来,并不是一件容易的事.Java没有提供任何机制来安全地终止线程(虽然Thread.stop和suspend方法提供了这样的机制,但由于存在缺陷,因此应该避免使用).但它提供了中断,这是一种协作机制,能够使一个线程终止另一个线程的当前工作. 这种协作式的方法是必要的,我们很少希望某个任务.线程或服务立即停止,因为这种立即停止会使共享的数据结构处于不一致的状态.相反,在编写任务和服务时可以使用一种协作的方式:当需要停止时,它们首先会清除当前正在执

线程的取消和关闭

最近在总结multithread方面的知识.这篇主要介绍线程的取消. 在任务.线程.服务以及应用程序等模块中的生命周期结束问题,可能会增加他们在设计和实现时的复杂性.Java并没有提供某种抢占式的机制来取消操作或者终结线程.相反,它提供了一种协作式的中断机制来实现实现取消操作,但这要依赖于如何构建取消操作的协议,以及能否遵循这些协议.通过使用FutureTask和Executor框架,可以帮助我们构建可取消的任务和服务. ExecutorService.submit 将返回一个Future来描述

Picaso完美兼容OkHttp3.3,缓存优化两不误 - Tamic Developer"s Blog

为何在Fresco,Glide这么强大的背景下,我又想起了当初的Picasso,又为何写这篇文章?是因为最近项目采用了square公司的RxAndroid,Retrfit和OKhttp, 不得不联想到这个公司曾经还有款图片加载Picasso,所以采用了square公司的全家桶来进行项目开发,为了减少开发成本和也防止Apk增大,毕竟一个公司的框架之前兼容性不用担心,那么请让我们回顾一下Picass之路 首先先让我们看看主流图片加载库 Picasso,Square公司的开源项目 ,和Square的网

Jenkins的用户管理

用户管理入口 Jenkins首页有一个用户,但是只能从那查看用户列表和信息,管理用户的入口在Jenkins->系统管理->管理用户 新建用户 在管理用户左侧有一个新增用户,点击后按照表单填写即可  用户权限 在确定使用用户功能之后,需要在全局安全设置中先做一些配置 在Jenkins->系统管理->Configure Global Security中,勾选启用安全  上图是一个简单的示例 全局权限 第一行的用户是超级管理员 超级管理员设置权限的时候,只需要勾选Overall的两项即可

android源码大放送(实战开发必备),免费安卓demo源码,例子大全文件详细列表

免费安卓demo源码,例子大全文件详细列表 本列表源码永久免费下载地址:http://www.jiandaima.com/blog/android-demo 卷 yunpan 的文件夹 PATH 列表 卷序列号为 0000-73EC E:. │ jiandaima.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2016.03.10更新.txt │ ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签

jenkins权限配置不对导致jenkins无法登陆

提醒:每次更改权限时,要将config.xml备份一下. 在打开jenkins后,没有创建用户前,先不要勾选系统设置中启用安全选项,如果勾选了,就会出现无法进入jenkins的现象. 如果已经勾选可以通过如下方法来解决: 在jenkins默认的主目录.jenkins中修改config.xml文件,将文件下的几行 <useSecurity>true</useSecurity> <authorizationStrategy class="hudson.security.

[转]AsyncDisplayKit 教程:达到 60 FPS 的滚动帧率

[原文:https://github.com/nixzhu/dev-blog/blob/master/2014-11-22-asyncdisplaykit-tutorial-achieving-60-fps-scrolling.md] Facebook 的 Paper 团队给我们带来另一个很棒的库:AsyncDisplayKit.这个库能让你通过将图像解码.布局以及渲染操作放在后台线程,从而带来超级响应的用户界面,也就是说不再会因界面卡顿而阻断用户交互.既然这么厉害,那就在本教程里学一下它吧.

《Java并发编程实战》学习笔记Ⅱ

第六章 任务执行 大多数并发应用程序是围绕执行任务进行管理的.设计任务时,要为任务设计一个清晰的任务边界,并配合一个明确的任务执行策略.任务最好是独立的,因为这会提高并发度.大多数服务器应用程序都选择了下面这个自然的任务边界:单个客户请求.任务时逻辑上的工作单元,线程是使任务异步执行的机制.应用程序内部的任务调度,存在多种可能的调度策略:其中,最简单的策略是在单一的线程中顺序的执行任务.但它的吞吐量和响应性很差,一般只在特殊情况下使用:任务的数量很少但生命周期很长时,或者服务器只服务于唯一的用户