注册
环信即时通讯云

环信即时通讯云

单聊、群聊、聊天室...
环信开发文档

环信开发文档

环信FAQ

环信FAQ

集成常见问题及答案
RTE开发者社区

RTE开发者社区

汇聚音视频领域技术干货,分享行业资讯
技术讨论区

技术讨论区

技术交流、答疑
资源下载

资源下载

收集了海量宝藏开发资源
iOS Library

iOS Library

不需要辛辛苦苦的去找轮子, 这里都有
Android Library

Android Library

不需要辛辛苦苦的去找轮子, 这里都有
0
评论

自定义过滤器和拦截器实现ThreadLocal线程封闭 ThreadLocal

王二蛋和他的张大花 发表了文章 • 464 次浏览 • 2022-08-10 10:56 • 来自相关话题

线程封闭 线程封闭一般通过以下三个方法: Ad-hoc线程封闭:程序控制实现,最糟糕,忽略 堆栈封闭:局部变量,无并发问题 ThreadLocal线程封闭:特别好的封闭方法 方法2是最常用的,变量定义在接口内,本文主要讲解方法三,SpringBoot项目通... ...查看全部
0
评论

【flutter进阶】Widget源码详解-如何实现自由组合,动态刷新,布局绘制? Widget

王二蛋和他的张大花 发表了文章 • 1036 次浏览 • 2022-08-10 10:53 • 来自相关话题

看到结局的问题:如何区分StatelessWidget 和 StatefulWidget 的使用场景,不禁开始自问,对于StatefulWidget ,StatelessWidget,以及flutter中Widget的众多子类我真的足够了解吗? 对于自己经常要... ...查看全部
0
评论

Flutter中如何独立绘制每一个像素点? Flutter

王二蛋和他的张大花 发表了文章 • 709 次浏览 • 2022-08-10 10:51 • 来自相关话题

Flutter中如何独立绘制每一个像素点? 前提 前一阵我参照教程:GAMEBOY 仿真器 做了一个game boy模拟器,经过漫长的调试,终于成功的在电脑上运行了起来,但作为一个移动端开发者,我最终还是想要在手机上运行,在经过一番研究后,我卡在了第一个难点:... ...查看全部
0
评论

Java转Android:第8天 Service帮你背诵古诗词 service

王二蛋和他的张大花 发表了文章 • 507 次浏览 • 2022-08-09 11:09 • 来自相关话题

一、我讲 今天,我主要讲一下android里面的服务Service,以及它的使用方法。 1.1 服务 Service Service其实是Android的四大组件之一。 安卓有四大组件,前面我们说的Activity和BroadCastReceiver,其实都属... ...查看全部
0
评论

发布Android库至Maven Central详解 Maven Central

王二蛋和他的张大花 发表了文章 • 573 次浏览 • 2022-08-09 11:06 • 来自相关话题

最近,使用compose编写了一个类QQ的image picker。完成android library的编写,在此记录下发布这个Library到maven central的流程以及碰到的问题。 maven:mvnrepository.com/artifact/... ...查看全部
0
评论

Android系统编译优化:使用Ninja加快编译 Android

王二蛋和他的张大花 发表了文章 • 1137 次浏览 • 2022-08-09 11:04 • 来自相关话题

背景Android系统模块代码的编译实在是太耗时了,即使寥寥几行代码的修改,也能让一台具有足够性能的编译服务器工作十几分钟以上(模块单编),只为编出一些几兆大小的jar和dex。这里探究的是系统完成过一次整编后进行的模块单编,即m、mm、mmm等命令。除此之外... ...查看全部
0
评论

Kotlin 标准库随处可见的 contract 到底是什么? kotlin

王二蛋和他的张大花 发表了文章 • 496 次浏览 • 2022-08-09 11:00 • 来自相关话题

Kotlin 的标准库提供了不少方便的实用工具函数,比如 with, let, apply 之流,这些工具函数有一个共同特征:都调用了 contract() 函数。@kotlin.internal.I... ...查看全部
0
评论

来,跟我一起撸Kotlin runBlocking/launch/join/async/delay 原理&使用 kotlin

王二蛋和他的张大花 发表了文章 • 865 次浏览 • 2022-08-09 10:57 • 来自相关话题

之前一些列的文章重点在于分析协程本质原理,了解了协程的内核再来看其它衍生的知识就比较容易了。 接下来这边文章着重分析协程框架提供的一些重要的函数原理,通过本篇文章,你将了解到: runBlocking 使用与原理 launch 使用与原理 join 使用与... ...查看全部
0
评论

封装一个有趣的 Loading 组件 Loading

王二蛋和他的张大花 发表了文章 • 451 次浏览 • 2022-08-08 11:18 • 来自相关话题

前言在上一篇普通的加载千篇一律,有趣的 loading 万里挑一 中,我们介绍了使用Path类的PathMetrics属性来控制绘制点在路径上运动来实现比较有趣的loading效果。有评论说因为是黑色背景,所以看着好看。黑色背景确实显得高端一点,但是... ...查看全部
0
评论

关于mmap不为人知的秘密 mmap

王二蛋和他的张大花 发表了文章 • 594 次浏览 • 2022-08-08 11:16 • 来自相关话题

mmap初入 我们常说的mmap,其实是一种内存映射文件的方法,mmap将一个文件或者其它对象映射进内存。但是更加确切的来说,其实是linux中的线性区提供的可以和基于磁盘文件系统的普通文件的某一个部分相关联的操作。线性区其实是由进程中连续的一块虚拟文件区域,... ...查看全部
0
评论

Kotlin协程-协程的暂停与恢复 & suspendCancellableCoroutine的使用 协程

王二蛋和他的张大花 发表了文章 • 1808 次浏览 • 2022-08-08 11:14 • 来自相关话题

前言 之前在网上看到有人问协程能不能像线程一样 wait(暂停) 和 notify(恢复) 。 应用场景是开启一个线程然后执行一段逻辑,得到了某一个数据,然后需要拿到这个数据去处理一些别的事情,需要把线程先暂停,然后等逻辑处理完成之后再把线程 notify。 ... ...查看全部
0
评论

ConstraintLayout 中的 Barrier 和 Chains Chains Barrier ConstraintLayout

王二蛋和他的张大花 发表了文章 • 533 次浏览 • 2022-08-08 11:12 • 来自相关话题

1. Barrier是一个准则,可以说是对其的规则,这样说还不够名义,我们可以列表一些比较常见的场景; 官网 Barrier。具体看图 “第二行的label”和“第二行value”是一个整体,他们距离上面是 100dp ... ...查看全部
0
评论

❤️Android 12 高斯模糊-RenderEffect❤️ 高斯模糊

王二蛋和他的张大花 发表了文章 • 700 次浏览 • 2022-08-08 11:11 • 来自相关话题

 Android 12 高斯模糊 新功能:更易用的模糊、彩色滤镜等特效 。 新的 API 让你能更轻松地将常见图形效果应用到视图和渲染结构上。 使用 RenderEffect 将模糊、色彩滤镜等效果应用于 RenderNode 或 View。 ... ...查看全部
0
评论

Flutter 中使用Chip 小部件 Chip

王二蛋和他的张大花 发表了文章 • 547 次浏览 • 2022-08-05 11:07 • 来自相关话题

概述 典型的chip是一个圆角的小盒子。它有一个文本标签,并以一种有意义且紧凑的方式显示信息。chip可以在同一区域同时显示多个交互元素。一些流行的chip用例是: 发布标签(您可以在许多 WordPress ,VuePress,知乎,掘金,公众号或 Git... ...查看全部
0
评论

DeepLink在转转的实践 DeepLink

王二蛋和他的张大花 发表了文章 • 529 次浏览 • 2022-08-05 10:59 • 来自相关话题

1. DeepLink 简介 DeepLink:“深度链接”技术,这个名词初看比较抽象,不过在我们身边却有不少应用,比如以下场景: 刷抖音看到转转的广告,点击视频下方的下载链接,如果没有安装转转则下载转转,并在打开转转后跳转到相应活动页面 在微信看到朋友分享... ...查看全部
0
评论

Retrofit解密:接口请求是如何适配suspend协程? suspend

王二蛋和他的张大花 发表了文章 • 588 次浏览 • 2022-08-05 10:57 • 来自相关话题

最初的retrofit请求 我们先看下原来如何通过retrofit发起一个网络请求的,这里我们直接以官网的例子举例: 动态代理创建请求服务 interface GitHubService { //创建get请求方法 @GET("users/{u... ...查看全部
0
评论

【Android】一键登录 - 三大运营商 一键登录

王二蛋和他的张大花 发表了文章 • 1637 次浏览 • 2022-08-05 10:55 • 来自相关话题

业务背景: 在条件允许的情况下(无 SIM 卡的手机,无法触发一键登录),通过运行商提供的服务,进行【一键登录】。简化用户的登录操作,提高 App 的登录注册率以及使用率。 本方案采用的是阿里云中【一键登录】方案。 效果图: 前提知识: 整个流程如图所 ... ...查看全部
0
评论

记录 Kotlin 实践的一些好建议 kotlin

王二蛋和他的张大花 发表了文章 • 739 次浏览 • 2022-08-05 10:54 • 来自相关话题

目录 注释 函数式接口 高阶函数 扩展函数 注释 Java:    /**     * @see AdVideoUserInfoContainerData#type     */ &nbs... ...查看全部
0
评论

一天高中的女同桌突然问我是不是程序猿 程序猿

王二蛋和他的张大花 发表了文章 • 490 次浏览 • 2022-08-03 15:36 • 来自相关话题

背景 昨天一个我高中的女同桌突然发微信问我“你是不是程序猿 我有问题求助”, 先是激动后是茫然再是冷静,毕业多年不见联系,突然发个信息求助,感觉大脑有点反应不过来... 再说我一个搞Android的也不咋会python啊(不是说Java不能实现,大家懂的,人... ...查看全部
0
评论

Kotlin协程之Dispatchers原理 kotlin Dispatchers

王二蛋和他的张大花 发表了文章 • 523 次浏览 • 2022-08-03 15:28 • 来自相关话题

Kotlin协程不是什么空中阁楼,Kotlin源代码会被编译成class字节码文件,最终会运行到虚拟机中。所以从本质上讲,Kotlin和Java是类似的,都是可以编译产生class的语言,但最终还是会受到虚拟机的限制,它们的代码最终会在虚拟机上的某个线程上被执... ...查看全部
0
评论

Flutter 使用 json_serializable 解析 JSON 支持泛型 json_serializable

王二蛋和他的张大花 发表了文章 • 700 次浏览 • 2022-08-03 15:26 • 来自相关话题

一般情况下,服务端接口都会有一套数据结构规范,比如 { "items": [], "success": true, "msg": "" } 不同的接口,items 中返回的数据结构一般都是不一样的,这时使用泛型,可以简化代码 本文将以 ... ...查看全部
0
评论

倍投模型模拟:1w块搏10w,靠谱吗? 算法

王二蛋和他的张大花 发表了文章 • 738 次浏览 • 2022-08-02 11:09 • 来自相关话题

前两天刷影视解说看到一个短片,甲乙两个人打赌,甲每次输了后,都会加倍。一群人围观,甲连输8次,在最后一次赌上全部身家后,一把梭哈赢了,直接走上人生巅峰。 当然,这只是爽剧,让我们用代码模拟下真实情况是怎么的,超刺激哦! 让我们先看下代码(用JS简单写的): /... ...查看全部
0
评论

Kotlin函数声明与闭包【Kotlin从拒绝到真香】 kotlin

王二蛋和他的张大花 发表了文章 • 518 次浏览 • 2022-08-02 11:07 • 来自相关话题

前言本文介绍闭包。闭包其实不算是新东西了。 其实 Kotlin 就基本没有多少新东西,甚至可以说新型编程语言基本都没有新东西。是把先前编程语言好用的特性组装起来,再加一部分拓展。本文大纲1. 闭包介绍首次接触 闭包 应该... ...查看全部
0
评论

Kotlin-Flow常用封装类StateFlow的使用 StateFlow

王二蛋和他的张大花 发表了文章 • 683 次浏览 • 2022-08-02 10:53 • 来自相关话题

Kotlin中StateFlow的使用 StateFlow 是 Flow 的实现,是一个特殊的流,默认的 Flow 是冷流,而StateFlow 是热流,和 LiveData 比较类似。关于冷热流后面一期 SharedFlow 会详细说明。 使用 StateF... ...查看全部
0
评论

从val跟var了解虚拟机世界 val var

王二蛋和他的张大花 发表了文章 • 708 次浏览 • 2022-08-01 14:57 • 来自相关话题

val 跟 var val本意就是一个不可变的变量,即赋初始值后不可改变,想较于val,var其实就简单的多,就是可变变量。为什么说val是不可变的变量呢?这不就是矛盾了嘛,其实不矛盾,我们在字节码的角度出发,比如有 val a = Test() var b... ...查看全部
0
评论

Kotlin协程:协程上下文与上下文元素 协程

王二蛋和他的张大花 发表了文章 • 554 次浏览 • 2022-08-01 14:54 • 来自相关话题

一.EmptyCoroutineContext    EmptyCoroutineContext代表空上下文,由于自身为空,因此get方法的返回值是空的,fold方法直接返回传入的初始值,plus方法也是直接返回传入的c... ...查看全部
0
评论

有趣的 Kotlin 0x0D: IntArray vs Array<Int> IntArray

王二蛋和他的张大花 发表了文章 • 491 次浏览 • 2022-08-01 14:52 • 来自相关话题

介绍 IntArray 整数数组。在 JVM 平台上,对应 int[]。 Array Array<T> 表示 T 类型数组。在 JVM 平台上,Array<Int> 对应 Integer[]。 验证 fun main() { &nbs... ...查看全部
0
评论

Flutter实现微信朋友圈高斯模糊效果 高斯模糊 Flutter

王二蛋和他的张大花 发表了文章 • 841 次浏览 • 2022-08-01 14:50 • 来自相关话题

1. 背景 最近一个需求改版UI视觉觉得微信朋友圈的边缘高斯模糊挺好看,然后就苦逼吭哧的尝试在Flutter实现了,来看微信朋友圈点击展开的大图效果图: 微信朋友圈高斯模糊效果大概分4部分区域实现,如下图: 居中图片为原始图,然后背景模糊全图是原始图放大c... ...查看全部
0
评论

Android抓包从未如此简单 http Android

柳天明 发表了文章 • 535 次浏览 • 2022-07-29 17:14 • 来自相关话题

一、情景再现: 有一天你正在王者团战里杀的热火朝天,忽然公司测试人员打你电话问为什么某个功能数据展示不出来了,昨天还好好的纳,是不是你又偷偷写bug了。。。WTF!,你会说:把你手机给我,我连上电脑看看打印的请求日志是不是接口有问题。然后吭哧吭哧搞半天看到接... ...查看全部
0
评论

Android ViewModelScope 如何自动取消协程 ViewModelScope

王二蛋和他的张大花 发表了文章 • 516 次浏览 • 2022-07-29 15:06 • 来自相关话题

先看一下 ViewModel 中的 ViewModelScope 是何方神圣 val ViewModel.viewModelScope: CoroutineScope get() { val scope: Corouti... ...查看全部
0
评论

Android 12新功能:使用SplashScreen优化启动体验 Splashscreen

王二蛋和他的张大花 发表了文章 • 1405 次浏览 • 2022-07-29 14:49 • 来自相关话题

前言由于很多应用在启动时需要进行一些初始化事务,导致在启动应用时有一定的空白延迟,在之前我们一般的做法是通过替换 android:windowBackground 的自定义主题,使应用启动时及时显示一张默认图片来改善启动体验。在Androi... ...查看全部
0
评论

WebView初体验【Android】 webview

王二蛋和他的张大花 发表了文章 • 569 次浏览 • 2022-07-29 14:44 • 来自相关话题

每天认真洗脸,多读书,按时睡,少食多餐。变得温柔,大度,继续善良,保持爱心。不在人前矫情,四处诉说以求宽慰,而是学会一个人静静面对,自己把道理想通。这样的你,单身也所谓啊,你在那么虔诚地做更好的自己,一定会遇到最好的,而那个人也一定值得你所有等待。 在We... ...查看全部
0
评论

普通的加载千篇一律,有趣的 loading 万里挑一 Loading

王二蛋和他的张大花 发表了文章 • 511 次浏览 • 2022-07-29 14:40 • 来自相关话题

前言在网络速度较慢的场景,一个有趣的加载会提高用户的耐心和对 App 的好感,有些 loading 动效甚至会让用户有想弄清楚整个动效过程到底是怎么样的冲动。然而,大部分的 App的 loading 就是下面这种千篇一律... ...查看全部
0
评论

写出优雅的Kotlin代码:聊聊我认为的 "Kotlinic" kotlin Android

柳天明 发表了文章 • 581 次浏览 • 2022-07-27 14:37 • 来自相关话题

"Kotlinic" 一词属于捏造的,参考的是著名的"Pythonic",后者可以译为“很Python”,意思是写的代码一看就很有Python味。照这个意思,"Kotlinic"就是“很Kotlin”,很有Kotlin味。 Kotlin程序员们不少是从Java... ...查看全部
0
评论

Android 平台 Native Crash 问题分析与定位 android NDK Android

柳天明 发表了文章 • 791 次浏览 • 2022-07-27 14:36 • 来自相关话题

一 Native Crash 简介 Native Crash 是发生在 Android 系统中 C/C++ 层面的 Crash,具体可参考: # Android 平台 Native Crash 捕获原理详解 二 Native C/C++ Libraries 简... ...查看全部
0
评论

关于标准 MVVM 设计模式在 Android 中应用的思考 mvvm

王二蛋和他的张大花 发表了文章 • 520 次浏览 • 2022-07-27 11:20 • 来自相关话题

本来这篇文章很早就应该写的,一直没(比)有(较)时(懒)间 今天决定把它写完咯 首先表明态度, I think: 网上流传的 ViewModel + LiveData + XXX 的号称 MVVM 的代码设计基本都是假的(fake news :P) MV... ...查看全部
0
评论

Flutter【手势&绘制】模拟纸质书籍翻页 Flutter

王二蛋和他的张大花 发表了文章 • 1190 次浏览 • 2022-07-27 11:16 • 来自相关话题

前言 今天继续探索绘制与手势的组合实践,之前在看电子书切换页面时会有一个模拟纸质书籍翻页效果,这是典型的绘制和手势的结合实现的效果,那么今天我们就用Flutter也实现这样的一个效果吧。 原理 大家可以找本书翻页到一半看下效果,从右下角翻到一半时,我们可以将可... ...查看全部
0
评论

Android | ViewModel源码分析 ViewModel

王二蛋和他的张大花 发表了文章 • 743 次浏览 • 2022-07-27 11:14 • 来自相关话题

前言ViewMode 是我们日常开发中最常用的组件之一,也是实现 MVVM 模式不可缺少的一环,这篇文章将从使用到源码分析以及常见的一些知识点来分析一下 ViewModel了解 ViewModelViewModel 旨在注重生命周期的方式存储和管理界面的相关数... ...查看全部
0
评论

PermissionX 1.5发布,支持申请Android特殊权限啦 PermissionX

王二蛋和他的张大花 发表了文章 • 711 次浏览 • 2022-07-27 11:10 • 来自相关话题

前言 Hello 大家早上好,说起 PermissionX,其实我已经有段时间没有更新这个框架了。一是因为现在工作确实比较忙,没有过去那么多的闲暇时间来写开源项目,二是因为,PermissionX 的主体功能已经相当稳定,并不需要频繁对其进行变更。 不过之前一... ...查看全部
0
评论

SDK无侵入初始化并获取Application Application

王二蛋和他的张大花 发表了文章 • 771 次浏览 • 2022-07-26 15:39 • 来自相关话题

1.SDK无侵入初始化并获取Application 无侵入初始化SDK并获取Application的意思是不需要业务方手动调用SDK的初始化函数。 这个就得利用Android四大基本组件之一ContentProvider了,其执行的时机是位于Applicati... ...查看全部
0
评论

能说一说 Kotlin 中 lateinit 和 lazy 的区别吗? lazy lateinit

王二蛋和他的张大花 发表了文章 • 483 次浏览 • 2022-07-26 15:36 • 来自相关话题

使用 Kotlin 进行开发,对于 latelinit 和 lazy 肯定不陌生。但其原理上的区别,可能鲜少了解过,借着本篇文章普及下这方面的知识。 lateinit 用法 非空类型可以使用 lateinit 关键字达到延迟初始化。  class I... ...查看全部
0
评论

Flutter 桌面探索 | 自定义可拖拽导航栏 Flutter

王二蛋和他的张大花 发表了文章 • 1081 次浏览 • 2022-07-26 15:32 • 来自相关话题

1. 前言 上一篇 《桌面导航 NavigationRail》 中介绍了官方的桌面导航,但整体灵活性并不是太好,风格我也不是很喜欢。看到飞书桌面端的导航栏可以支持拖拽排序,感觉挺有意思。而且排序之后,下次进入时会使用该顺序,而且在其他设备上也会同步该配置顺序。... ...查看全部
0
评论

Android AIDL使用指南 AIDL Android

柳天明 发表了文章 • 643 次浏览 • 2022-07-26 10:30 • 来自相关话题

AIDL 全称 Android Interface Definition Language ,安卓接口定义语言。AIDL 用来解决 Android 的跨进程通信问题,底层原理是 Binder ,实现思路是 C / S 架构思想。Server:接收请求,提供处理... ...查看全部
0
评论

如何利用 Flutter 实现炫酷的 3D 卡片和帅气的 360° 展示效果 3d Flutter

王二蛋和他的张大花 发表了文章 • 675 次浏览 • 2022-07-25 11:14 • 来自相关话题

本篇将带你在 Flutter 上快速实现两个炫酷的动画特效,希望最后的效果可以惊艳到你。 这次灵感的来源于更新 MIUI 13 时刚好看到的卡片效果,其中除了卡片会跟随手势出现倾斜之外,内容里的部分文本和绿色图标也有类似悬浮的视差效果,恰逢此时灵机一动,我们也... ...查看全部
0
评论

Android Native 异常捕获库 异常捕获

王二蛋和他的张大花 发表了文章 • 698 次浏览 • 2022-07-25 11:11 • 来自相关话题

Android Native 异常捕获库 基于google/breakpad的Android Native 异常捕获库,在native层发生异常时java层能得到相关异常信息。 项目主页 现状 发生native异常时,安卓系统会将native异常信息输... ...查看全部
0
评论

不掌握这些坑,你敢用BigDecimal吗? BigDecimal

王二蛋和他的张大花 发表了文章 • 489 次浏览 • 2022-07-25 11:08 • 来自相关话题

背景 一直从事金融相关项目,所以对BigDecimal再熟悉不过了,也曾看到很多同学因为不知道、不了解或使用不当导致资损事件发生。 所以,如果你从事金融相关项目,或者你的项目中涉及到金额的计算,那么你一定要花时间看看这篇文章,全面学习一下BigDecimal。... ...查看全部
0
评论

Flutter 组件集录 | 桌面导航 NavigationRail NavigationRail

王二蛋和他的张大花 发表了文章 • 1026 次浏览 • 2022-07-25 10:44 • 来自相关话题

我们都知道 BottomNavigationBar 是一个移动端非常常用的底部导航栏组件,可以用于点击处理激活菜单,并通过回调来处理界面的切换。 -- 但是在桌面端,由于一般是宽大于高,所以 BottomNavigationBar ... ...查看全部
0
评论

公司产品太多了,怎么实现一次登录产品互通? 登录互通

王二蛋和他的张大花 发表了文章 • 436 次浏览 • 2022-07-25 10:42 • 来自相关话题

大家好,我是老王,最近开发新产品,然后老板说我们现在系统太多了,每次切换系统登录太麻烦了,能不能做个优化,同一账号互通掉。作为一个资深架构狮,老板的要求肯定要满足,安排! 一个公司产品矩阵比较丰富的时候,用户在不同系统之间来回切换,固然对产品用户体验上较差,... ...查看全部
0
评论

面试题 | 等待多个并发结果有哪几种方法? 并发

王二蛋和他的张大花 发表了文章 • 559 次浏览 • 2022-07-22 16:44 • 来自相关话题

引子 App 开发中,等待多个异步结果的场景很多见, 比如并发地在后台执行若干个运算,待所有运算执行完毕后归总结果。 比如并发地请求若干个接口,待所有结果返回后刷新界面。 比如统计相册页并发加载 20 张图片的耗时。 其实把若干异步任务串行化是最简单的解决办法... ...查看全部
0
评论

Android 实现App应用退到后台显示通知 显示通知

王二蛋和他的张大花 发表了文章 • 553 次浏览 • 2022-07-22 16:41 • 来自相关话题

需求背景 刚开始接到这个需求时,第一时间想到的是做成跟银行类app一样用户退到主页之后,需要在通知栏显示“XXX在后台运行”,并且该通知不能被清除,只有用户重新进入app再消失。然后就想到了一个方案前台服务(foregroundService) 来实现,于是撸... ...查看全部