`

创建前台服务和申请权限

 
阅读更多

什么是前台服务?

前台服务是那些被认为用户知道(用户所认可的)且在系统内存不足的时候不允许系统杀死的服务。前台服务必须给状态栏提供一个通知,它被放到正在运行(Ongoing)标题之下——这就意味着通知只有在这个服务被终止或从前台主动移除通知后才能被解除。

 

创建前台服务的步骤:

1.创建一个类,并extends Service,在onCreate()方法中,构建一个通知,调用startForeground()方法

public void onCreate() {
    super.onCreate();
    Intent intent = new Intent(this, MainActivity.class);
    PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);
    Notification notification = new NotificationCompat.Builder(this)
            .setContentTitle("This is content title")
            .setContentText("This is content text")
            .setWhen(System.currentTimeMillis())
            .setSmallIcon(R.mipmap.ic_launcher)
            .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
            .setContentIntent(pi)
            .build();
    startForeground(1, notification);
}

 

2.在主线程中启动Service

 

  

Intent startIntent = new Intent(this, MyService.class);
startService(startIntent); // 启动服务

 

 

3.申请运行时权限

if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(MainActivity.this, new String[]{ Manifest.permission. WRITE_EXTERNAL_STORAGE }, 1);
}

 

分享到:
评论

相关推荐

    百度地图获取手机定位前台服务

    由于Android 6.0及以上版本需要在运行时动态申请权限,因此在需要获取位置权限时,使用`ActivityCompat.checkSelfPermission()`和`ActivityCompat.requestPermissions()`进行检查和请求。 10. **兼容不同Android...

    android实现悬浮窗功能,无需权限

    3. 添加权限:虽然`TYPE_TOAST`类型的窗口不需要单独的悬浮窗权限,但还需要在AndroidManifest.xml中声明服务权限。 ```xml ... ... ... ``` 4. 启动悬浮窗:在需要显示悬浮窗的地方,启动服务。例如在...

    Android 实现版本更新(解决7.0、8.0权限问题)

    考虑到Android 7.0和8.0的后台限制,我们可以在前台服务中进行下载,这样可以保持网络连接并显示进度。同时,为了自定义下载目录,我们需要在`AndroidManifest.xml`中申请`WRITE_EXTERNAL_STORAGE`权限,并在运行时...

    android 保证服务不被杀死

    9. **权限申请**:确保服务需要的权限已经正确申请,如`RECEIVE_BOOT_COMPLETED`,以便在设备启动时恢复服务。 尽管上述方法可以提高服务的存活率,但需要注意的是,过度使用这些技巧可能会影响设备性能和电池寿命...

    ServiceBestPractice服务最佳实践源码(最新环境修改版)

    - 通过绑定服务,可以实现Activity和服务之间的交互。理解如何正确地绑定和解绑服务,以及处理服务的生命周期和Activity的生命周期之间的关系,是避免内存泄漏的关键。 8. **服务监控与性能优化**: - ...

    审批系统 以及权限控制完整系统 eclipse运行

    【审批系统及权限控制完整系统】是一个基于Eclipse开发的软件解决方案,主要目的是实现企业内部审批流程的自动化和用户权限的精细化管理。该系统采用了现代Web技术栈,前台使用Bootstrap框架,提供了用户友好的界面...

    Android 获取运用服务

    1. 权限问题:获取运行服务列表需要GET_TASKS权限,这在Android 6.0及以上版本可能需要动态申请。 2. 性能影响:频繁获取运行服务可能会影响应用性能,因此建议在必要时进行操作。 总结,获取Android设备上正在运行...

    分析的文档 系统的前台浏览功能需求

    本文档主要阐述了一个系统的需求,特别是关于系统前台浏览功能和后台管理功能的需求。系统设计的目标是为用户提供一个互动性强、信息丰富的平台,以便于游客、协会成员和协会管理层进行交流和活动管理。 首先,系统...

    Android如何保证自己的服务被系统kill后又被系统重启?

    例如,在`onCreate()`中初始化必要的资源,在`onDestroy()`中释放它们,确保服务在正确的时间被创建和销毁。 8. **优化服务**: 为了提高服务被杀的概率,应尽量减少服务对内存和CPU的占用,避免进行不必要的持久...

    Android 实现短信接收监听--(短信动态权限添加)

    在Android系统中,从6.0(API级别23)开始,系统引入了运行时权限管理,这使得许多敏感的权限,如读取和写入短信的权限,必须在应用程序运行时由用户进行动态授权。在之前的版本中,这些权限在安装应用时一次性全部...

    android

    6. **权限申请**:为服务申请必要的权限,如INTERNET、WAKE_LOCK等,这些权限可以帮助服务在特定条件下保持活动。 7. **内存管理优化**:合理优化服务的内存占用,减少因内存压力导致的服务被停止。 需要注意的是...

    Android 实现进程及Service常驻之MarsDaemon源码.zip

    总结来说,MarsDaemon是Android开发中实现进程和服务常驻的一种解决方案,它利用了前台Service和AIDL等技术,以确保服务在各种情况下都能保持运行。理解并运用MarsDaemon源码,可以提升开发者在后台服务开发方面的...

    添加新系统服务.zip

    1. **权限申请**:自Android 8.0(Oreo)开始,系统对后台服务的执行进行了限制。需要在`AndroidManifest.xml`中声明`<uses-permission>`,如`android.permission.FOREGROUND_SERVICE`,以允许服务在前台运行。 2. ...

    泛微E-cology9.0(EC9)官方前台全套操作手册

    3. **工作流程管理**:E-cology9.0的一大特色是强大的工作流引擎,手册将详细介绍如何创建、提交、审批和跟踪各种工作流程,例如请假申请、报销审批等,以及自定义工作流的规则和表单。 4. **文档管理**:系统提供...

    一个简单的调用android服务的例子

    绑定服务允许客户端和服务之间进行数据交换,且服务只有在至少有一个客户端绑定时才会运行,所有客户端解除绑定后服务会被自动销毁。 在提供的压缩包中,"一个简单的android调用其他程序的服务"可能包含以下关键...

    hello service

    例如,当应用被放到后台时,它不能再创建前台服务,除非用户明确启动了它。因此,系统服务需要更加谨慎地处理资源和权限。 3. **Notification Channels**:从Android 8.1开始,创建通知需要通过Notification ...

    Android语音播报、后台播报、语音识别

    2. 创建前台服务:使用`startForeground`方法启动一个前台服务,显示通知,这样即使应用被切换到后台,服务也不会被系统轻易杀死。 3. 在服务中执行语音播报:将上述的语音播报逻辑放入服务中,确保应用在后台时也能...

    MyLauncher

    6. **权限检测与申请**:对于Android 6.0及以上版本,MyLauncher可能会检查并动态申请运行服务所需的权限,确保服务在用户同意的情况下运行。 7. **BatteryOptimization豁免**:如果可能,MyLauncher会尝试将自己的...

    android 保活 支持8.0+

    4. **自定义通道和通知**:为了在后台运行服务,应用可能需要创建自定义的通知通道,并确保通知对用户有价值,避免被用户忽略或关闭。 5. **生命周期感知**:了解应用各个组件的生命周期,合理利用Lifecycle框架,...

    EasyFloat::fire:EasyFloat:浮窗从未如此简单(Android可拖曳悬浮窗,支持页面过滤,自定义动画,可设置单页浮窗,前台浮窗,多层浮窗,浮窗权限按需自动申请)。 ..)

    支持单页浮窗,无需权限申请 支持全局浮窗,应用前台浮窗,需要授权悬浮窗权限 自动权限检测,自动伸缩浮窗权限管理页,自动处理授权结果 支持系统浮窗的页面过滤 支持拖拽,支持各种状态的可选 支持预设位置的设定...

Global site tag (gtag.js) - Google Analytics