Android程序后台开启服务,显示通知栏

本文详细介绍了如何让Android程序在后台运行并接收通知栏消息,包括使用Service实现后台运行、监听Activity生命周期变化、开启服务,以及如何在服务中创建并发送通知栏消息的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个Android程序仅仅只能前台 运行是远远不够的,我们更希望它在后台运行,既可以接收消息,又不耽误我们去使用别的软件,这就要求我们要实现两点:

1,后台运行程序,借助service实现

2,通知栏通知消息,系统的notification

service实现程序后台运行

实现service程序 后台运行,首先要解决几个问题:

如何判断程序是否后台运行?如何在程序后台运行时去开启服务?

         后台进程是指程序对用户不可见的状态,在程序中又该如何去判断呢?其实很简单,我也搜了一些代码,但是都达不到我想要的效果,不如自己动脑。我们可以注册一个广播去监听activity的某些生命周期,当程序运行到某个生命周期时(stop或者destroy),可以发送广播,然后执行开启服务方法。

      这样的话就很灵活了,如果你想要程序不论在任何时候都可以接收到通知栏消息,那只需要在onCreate方法中开启一个可以发送notification的广播,诸如此类。

     我是在activity调用destroy后开启服务,广播接收器代码如下:

/**
     * 监听activity的结束
     */
    private BroadcastReceiver mFinishReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            //开启一个发送notification的service
            Intent intentService = new Intent(MainActivity.this,NotifyService.class);
            startService(intentService);
            //一定要注销广播
            unregisterReceiver(mFinishReceiver);
        }
    };
     在程序的onCreate方法中注册该广播:

IntentFilter filter = new IntentFilter("finish");
        registerReceiver(mFinishReceiver, filter);
因为activity的生命周期,所以在activity的onDestroy方法中去发送广播,通知广播接收器程序已经finish了,可以开启服务,所实现的效果就是当程序结束后,所开启的服务会一直运行在后台进行监听,并通过通知栏发送消息
 @Override
    protected void onDestroy() {
        super.onDestroy();
        //发送广播
        sendBroadcast(new Intent("finish"));
    }

 notification通知消息:

接下来的这些代码需要写在服务里

要使用通知栏可以分以下几步:

第一步,获取系统的通知栏管理对象:

 private NotificationManager manager;
 manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
第二步,获取通知栏Builder对象(是v4  包下的)

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext());
第三步,获取到builder对象后, 就可以对通知栏进行一个界面和通知形式的一些设置了


builder对象提供了很多方法,在这里介绍一些常用方法

//设置手机上LED灯的闪烁频率及灯的颜色,
setLights(@ColorInt int argb, int onMs, int offMs)
该方法的参数分析:

argb:LED灯的颜色

onMs:LED灯亮的时间,以毫秒为单位

offMs:LED灯灭的时间,以毫秒为单位

//定义通知栏所显示的内容
setTicker(CharSequence tickerText) 

//设置通知到来时的一些选项
mBuilder.setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND);
该方法有四个取值,DEFAULT_SOUND(默认的提示音),DEFAULT_VIBRATE(震动),DEFAULT_LIGHTS(灯闪烁),DEFAULT_ALL(拥有全部设置选项)

第四步,在builder设置好后就可以发送通知请求 了:

//发送通知请求
        manager.notify(1,mBuilder.build());



一个完整的发送通知栏的代码如下,当然下拉时的显示风格也可以自定义

//跳转意图
        Intent intent = new Intent(NotifyService.this,MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(),0,intent,0);
        NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext());
        //通知栏显示内容
        builder.setTicker("notify_activity");
        //通知消息下拉是显示的文本内容
        builder.setContentText("content");
        //通知栏消息下拉时显示的标题
        builder.setContentTitle("title");
        //接收到通知时,按手机的默认设置进行处理,声音,震动,灯
        builder.setDefaults(Notification.DEFAULT_ALL);
        //通知栏显示图标
        builder.setSmallIcon(R.drawable.notification_template_icon_bg);
        builder.setContentIntent(pendingIntent);
        notification = builder.build();
        //点击跳转后消失
        notification.flags |= Notification.FLAG_AUTO_CANCEL;
        manager.notify(1,notification);




为了在Windows安装ADB工具,你可以按照以下步骤进行操作: 1. 首先,下载ADB工具包并解压缩到你自定义的安装目录。你可以选择将其解压缩到任何你喜欢的位置。 2. 打开运行窗口,可以通过按下Win+R键来快速打开。在运行窗口中输入"sysdm.cpl"并按下回车键。 3. 在系统属性窗口中,选择"高级"选项卡,然后点击"环境变量"按钮。 4. 在环境变量窗口中,选择"系统变量"部分,并找到名为"Path"的变量。点击"编辑"按钮。 5. 在编辑环境变量窗口中,点击"新建"按钮,并将ADB工具的安装路径添加到新建的路径中。确保路径正确无误后,点击"确定"按钮。 6. 返回到桌面,打开命令提示符窗口。你可以通过按下Win+R键,然后输入"cmd"并按下回车键来快速打开命令提示符窗口。 7. 在命令提示符窗口中,输入"adb version"命令来验证ADB工具是否成功安装。如果显示版本信息,则表示安装成功。 这样,你就成功在Windows安装ADB工具。你可以使用ADB工具来执行各种操作,如枚举设备、进入/退出ADB终端、文件传输、运行命令、查看系统日志等。具体的操作方法可以参考ADB工具的官方文档或其他相关教程。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [windows环境安装adb驱动](https://blog.csdn.net/zx54633089/article/details/128533343)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Windows安装使用ADB简单易懂教程](https://blog.csdn.net/m0_37777700/article/details/129836351)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值