Android8.0 开机启动脚本,Android8.0 启动 Service 的方法

Android8.0 开始系统后台的管理更严了,启动 Service 和之前比会复杂些。而且不再是后台 Service 而是前台 Service,目的应该是为了让用户知道此时有 Service 正在运行。

另外貌似一旦创建了一个 NotificationChannel,那这个 NotificationChannel 就会一直存在,即便删除了相关代码

创建 NotificationChannel 的步骤,你可以把它写在 Application 中:

//需要创建 NotificationChannel

private void createNotificationChannel(){

NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

//判断是不是 Android8.0

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){

NotificationChannel channel = new NotificationChannel(

//字符串类型的 Channel id

CHANNEL_ID,

//字符串类型的 Channel name

CHANNEL_NAME,

NotificationManager.IMPORTANCE_DEFAULT);

manager.createNotificationChannel(channel);

}

}

启动 Service 的方法:

Intent i = new Intent(context, MyService.class);

context.startForegroundService(i);

在 Service 中的处理:

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){

Notification notification = new Notification.Builder(this, Constants.CHANGE_VOLUME_CHANNEL_ID).

setContentTitle("Service正在后台运行").

setSmallIcon(R.drawable.icon_check).

build();

startForeground(1,notification);

}

return super.onStartCommand(intent, flags, startId);

}

这些写完后在运行 App,启动 Service 后,就会在通知了上常驻一个通知,显示“Service正在后台运行”,直至 Service 销毁。

如果不想希望常驻通知,你可以试试 IntentService,使用方法和Service一样,我不太确定是不是真的不会常驻通知,但在我的项目中是没有常驻通知的。

有疑问和建议请告诉我哦😁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值