A Blog to Write about Everything

0%

现在人升国内没有设置任何盈利手段,你们的捐赠和支持是我们更新的极大动力!😘

由于要赶完成毕业论文最终稿、准备设计演示和答辩,2020年5月10号前我们是没有多少时间进行开发的,下一期应用更新应该会在5月末或6月初。

同时这段时间更新名单也会更新得比较慢,请谅解。

捐赠手段

支付宝

支付宝可以直接在应用内的关于界面跳转捐赠~

微信

QQ


捐赠名单

感谢以下各位的捐赠:

更新时间:2020年5月18日 23点07分;如有遗漏请邮件联系~

(按时间倒序排序)

时间 姓名 留言 金额
2020/05/18 *地根 10.00
2020/05/18 (微信)光风霁月 加油,支持一下。希望后期可以开通账号制 6.00
2020/05/18 (微信)洛翎 大佬加油呀,我感觉你做的软件特别棒 1.00
2020/05/16 *茗 很喜欢这款软件,感谢开发者小哥哥! 16.60
2020/05/16 (QQ)小绿小绿,无所畏惧 学生党,挺好用!加油鸭 1.88
2020/05/15 *帅兵 3.00
2020/05/13 *希 2.00
2020/05/09 *群 2.97
2020/05/09 (微信)fluke. 这个想法之前在书上看到过,没想到就有小天才们做出来了哇! 5.00
2020/05/08 *玉勤 6.00
2020/05/07 (微信)Eline 梦想中的app,作者加油,期待软件的更新 6.66
2020/05/06 *亚杰 5.00
2020/05/05 *著 2.00
2020/05/04 *美岑 10.00
2020/05/04 *城 喜欢这软件,支持一下 10.00
2020/05/03 *思达 安卓绿色 加油(ง •_•)ง 5.00
2020/05/02 (微信)空气 好像打破66次赞赏了😂,很喜欢,希望能出团队加入时间修改 2.00
2020/04/29 (微信)秦川月 (留下贫穷泪水)一张紫毛聊表心意 5.00
2020/04/27 (QQ)学习使我快乐 小小心意希望软件以后更好 1.00
2020/04/25 (微信)zyF 感觉挺有意思的 1.00
2020/04/25 (微信)少年お书生 学生党一枚,小小心意,不成敬意。特别喜欢这个软件,加油鸭 1.00
2020/04/24 *婧茹 1.00
2020/04/23 *志坚 喜欢人升,感恩。 3.00
2020/04/22 (微信)小健 太感动了,找了20多款学习软件,终于找到适合我的。继续加油! 2.00
2020/04/21 *波 加油,很喜欢这个软件 22.22
2020/04/20 *剑桥 这就是我想要的TODO,加油^0^~ 4.00
2020/04/20 *韬宇 1.00
2020/04/20 *昱汐 等我有钱了再多捐点,期待更新 3.58
2020/04/20 *一乘 6.00
2020/04/20 (微信)夜雨 感谢,希望能持续更新,哈哈。 6.00
2020/04/19 (微信)太难了 你好作者我非常喜欢人升这款APP,一点心意希望APP越做越好 4.00
2020/04/18 *寒啸 一点点 3.00
2020/04/17 *蕊杭 5.00
2020/04/17 (微信)月亮和星星 (学生党,没啥钱)希望能继续把这么好的软件做下去哈! 0.99
2020/04/16 (微信)涵 感想作出我梦想中的APP。如果能推出更多的货币体系就更好了 2.00
2020/04/15 *梓浩 感谢 0.88
2020/04/15 *晓丽 6.70
2020/04/14 (微信)禾乌 加油,这个软件太赞了 1.00
2020/04/14 (微信)Dong Jiahao 学生,微信里没钱乐,感谢创造出这么好的软件 1.00
2020/04/14 (微信)画墨 很喜欢,作者加油😀。希望能自己设置完成任务属性增加量 6.00
2020/04/13 (微信) 太棒啦,👍👍👍 1.00
2020/04/13 (微信) 姑且叫我童年想像打游戏一样去把上课当成打游戏now程序秃一枚 2.00
2020/04/13 *旭 0.10
2020/04/12 (微信)嘤嘤嘤 要好好做下去啊冲冲冲 5.00
2020/04/11 (微信)雨点·葡萄猪 学生党没啥钱,请你吃包辣条hhhhh 2.00
2020/04/10 一随 做的真的很不错,加油(学生党聊表心意) 1.00
2020/04/10 酷安@Σ松鼠蒸鱼巛 学生党,支持一下😂 2.33
2020/04/10 (微信)🍋青柠 我把它用作平行实境游戏的辅助,若有专门的工具就好了可能会买 1.00
2020/04/09 *明鑫 学生党,没啥钱,只能表示点心意了😂 2.00
2020/04/09 *张建 不多,一瓶快乐肥宅水请收下 3.00
2020/04/09 (微信)Wanten 希望继续良心改进、优化♥,我们会一直支持你们的。 10.00
2020/04/09 (微信)*影 感谢!加油! 5.00
2020/04/07 胡智博 果真不错。好活当赏,加油(ง •̀_•́)ง 1.00
2020/04/06 **宏 作者加油(ง •̀_•́)ง,小小心意 2.00
2020/04/05 (微信)Redamancy 真的好棒啊,这个软件!祝毕业顺利!人升越来越好! 5.00
2020/04/05 (微信)东风 加油! 3.00
2020/04/05 *伟俊 请你吃辣条哈哈哈 1.00
2020/04/05 Xin_ 超喜欢人升!突然想好好过好自己的人生!期待人升存在发展999 9.99
2020/04/04 *明阳 加油,长长久久 2.33
2020/04/02 *周丁 小小心意 2.00
2020/04/02 (微信)YOLO 很有创意的软件,希望作者以后可以开发出更多有意思的功能 3.00
2020/04/01 (微信)惜文 感谢,一点点支持(学生党) 2.00
2020/04/01 (微信)阿莉司 UI舒服,很棒的创意、也很有用…感谢作者!(˘︶˘) 2.33
2020/03/31 *文鑫 加油! 4.00
2020/03/29 *雯 很喜欢!! 每天都在用!要一直做下去呀! 3.90
2020/03/28 *小庆 支持。 1.00
2020/03/28 *铖昊 1.00
2020/03/28 *军 给瓶农夫山泉,学生党一枚 2.00
2020/03/27 **楠 很棒的创意 作者棒棒 一起往前.. 5.00
2020/03/26 *洪实 期待新的功能,加油 10.00
2020/03/26 (微信)平凡的人生 感谢你的软件对我的帮助,也在此给予一些力所能及的谢礼 1.00
2020/03/26 (微信)Jamin 用起来很舒服,正在慢慢摸索中,作者大大继续加油哦 5.00
2020/03/22 *锦荣 5.00
2020/03/21 张不song~ 开发者棒棒~为数不多的能让我坚持一个月不卸载的清单类软件\ 5.00
2020/03/21 *之沫 炒鸡棒的创意,谢谢开发大大!请继续更新哦 3.00
2020/03/21 *宇欣 4.00
2020/03/21 *镇杰 4.08
2020/03/21 (微信) 有创意小而美 6.00
2020/03/20 (微信)方糖Ricky 我一直很想要这样的应用!感谢!希望后续会出iOS端的,加油! 6.66
2020/03/18 (微信)Xm 半睡不醒的考研党表示棒极了XD 10.00
2020/03/18 *菁 学生,不多,加油 2.00
2020/03/17 *婷 希望一直更新下去,谢谢!很喜欢 6.00
2020/03/17 *丽豪 非常感谢相遇!功能又细又强大!爱您! 10.00
2020/03/14 (微信)方程式-高二党 超级感谢你们。成功让一个整天恍恍惚惚的高中生改变了自己。 5.00
2020/03/14 **呈 15.00
2020/03/14 (微信) 真的很好用,加油 2.00
2020/03/13 (微信)Eggness! 谢谢您开发这个好应用,对我很有帮助,开发者加油! 1.00
2020/03/13 (微信) 加油 奥利给! 2.00
2020/03/13 **鑫 学生党的支持 2.33
2020/03/13 *汶 6.00
2020/03/12 *国鸿 学生党微小的支持 3.00
2020/03/12 *晓烽 2.00
2020/03/11 *峰 10.00
2020/03/10 (微信)缕缕不倦 以后进度了一定还会回来感谢开发者! 5.00
2020/03/09 *雨潇 6.66
2020/03/08 *莉 非常好的软件,继续完善,一定能火 10.00
2020/03/06 (微信)酷安-概念1337 给有心回复的作者(((о´∀о)ノ♡ヽ(о´∀о 1.23
2020/03/06 (微信)酷安-概念1337 グッ!(๑•̀ㅂ•́)و✧ 3.21
2020/03/06 (微信)酷安-概念1337 游戏人升咯~ 3.88
2020/03/06 *阳杭 1.80
2020/03/05 (微信)Jason. 支持一下!继续加油 6.00
2020/03/05 (微信)腊月不知寒冬暖 期待(o^^o) 4.00
2020/03/05 (微信)粽子今天高兴吗? 希望人升找到一个合适的盈利模式,长久发展下去,宝藏软件加油鸭 6.66
2020/03/03 *赠涵 很棒的软件 1.00
2020/03/02 (微信)泛舟 非常好用!希望能坚持做下去,不断完善 6.00
2020/03/02 *淇锋 还是个学生只能表示下心意,希望能越来越好 2.33
2020/03/02 *俊俊 一点心意,请收下。 5.00
2020/03/01 *俊辉 5.00
2020/03/01 *东升 0.10
2020/02/29 *永红 0.15
2020/02/28 *宇航 虽然很少,但是应该或许大概能请你喝奶茶? 5.00
2020/02/26 *竟楠 完美软件。 2.00
2020/02/26 *钰华 5.20
2020/02/24 (微信)汉十一 我喜欢这个软件的创意,感谢开发者 3.00
2020/02/23 *智灏 1.00
2020/02/22 (微信)匿名 10.00
2020/02/16 *培星 6.66
2020/02/15 *子贤 10.00
2020/02/15 *文涛 2.00
2020/02/15 (微信)夏 Singerson 10.00
2020/02/14 (微信)楸 很棒的应用,加油!情人节快乐吗orz 1.00
2020/02/14 *钰瑶 8.88
2020/02/13 (微信)我的名字 很有意思的软件,希望能一直做下去。 18.00
2020/02/13 (微信)就暮 加油,祝越来越好~——就暮 2.88
2020/02/12 (微信)夏元素 加油^0^~ 5.00
2020/02/11 (微信匿名) 超级喜欢 5.00
2020/02/09 *凯航 1.88
2020/02/09 *立国 9.99
2020/02/08 *杨 5.00
2020/02/06 *君瑞 2.77
2020/02/05 (微信)gorkor 共勉之 5.20
2020/02/05 *明 6.66
2020/02/04 *鑫 3.65
2020/01/28 (微信)Good luck,Mr. Gosky. 软件和UI都很好看,加油! 20.00
2020/01/26 (微信)长欢 6.00
2020/01/22 (支付宝)*— 10.00
2020/01/18 (微信)Player 3.00
2020/01/17 (微信)sin 加油! 1.00
2019/12/30 (微信)HouRuilong 6.66
2019/12/28 *宇轩 3.00
2019/12/15 *银川 5.00
2019/12/13 *子秋 3.00
2019/12/11 (微信)竹璃纷染 ヾ(❀╹◡╹)ノ~支持! 3.00
2019/12/10 *奕斯 2.00
2019/12/08 *柏墚 2.00
2019/12/08 (微信)孙書云101029 软件实在是太棒了!学生党很穷,这就是一点心意,表达一下感谢! 2.00
2019/12/06 (微信匿名) 用了快一年了,很舒服。 6.66
2019/12/05 *谦 7.77
2019/12/03 *裕钦 2.00
2019/11/23 *阳 10.00
2019/11/23 *克富 1.00
2019/11/04 【红巢】夕阳薄暮 1.00
2019/10/31 *孝宇 6.00
2019/10/31 *静 6.00
2019/10/31 酷安 @该账号涉嫌严重违纪 6.66
2019/10/28 *刚 5.00
2019/10/28 *江 6.00
2019/10/27 *艺 5.00
2019/10/26 *博超 1.00
2019/10/20 *海涛 3.00
2019/10/17 *佳佳 1.00
2019/10/10 *进伟 30.00
2019/10/03 *心煌 10.00
2019/09/24 *羽 2.00
2019/08/29 *步军 10.00
2019/08/29 *金陆 5.00
2019/08/25 *永振 3.00
2019/08/25 *静 10.00
2019/06/22 *思远 5.00
2019/05/21 *瀚禧 57.21
2019/04/12 *国浩 5.00
2019/04/06 *耿 0.01
2019/04/03 *金娥 5.00
2019/03/29 *浩宗 1.00
2019/03/21 *晓阳 10.00
2019/03/20 *泽恺 1.00
2019/03/19 *伟棠 5.00
2019/03/09 *翊淇 3.00
2019/02/27 *汉凯 6.66
2019/02/27 *京 9.99
2019/02/15 *猛 5.00
2019/02/14 *涵予 5.00
2019/02/02 *佳融 5.00

参考: https://blog.csdn.net/qq_16445551/article/details/70213660

起因

这个问题其实一直存在,但是新版本增加了Toolbar收缩之后,就因为这个自动滚动直接导致了Toolbar收缩,现象更为明显。

解决办法

参考原文两个解决办法

如果你的应用的最小支持版本达到了Android KitKat 4.4的话,建议使用第一种方法。

简单总结一下:

  1. support.v7包的PopupMenu换成android.widget.PopupWindow包下的PopupMenu。

    对应到AndroidX的话,就是将androidx.appcompat.widget.PopupMenu换成import android.widget.PopupMenu

  1. 重写与PopupMenu绑定的AnchorViewrequestRectangleOnScreen(Rect rectangle, boolean immediate)方法,并且return false

参考: https://github.com/Kotlin/kotlinx.coroutines/issues/799

起因

发布了《人升》新版本后,

线上突然出现了数个Kotlin协程相关的异常。

IllegalStateException: Module with the Main dispatcher is missing. Add dependency providing the Main dispatcher, e.g. ‘kotlinx-coroutines-android’

而我们肯定是已经依赖了kotlin的协程库的,问题不在于此。

不是很懂为什么在更新的好几天之后才集中爆发这个问题。

查询了一下发现是升级kotlin版本后的混淆bug,要增加几条混淆规则。

混淆规则

https://github.com/Kotlin/kotlinx.coroutines/blob/master/kotlinx-coroutines-core/jvm/resources/META-INF/proguard/coroutines.pro

将以下混淆规则加入到项目的混淆规则文件中:

1
2
3
4
5
6
7
8
9
10
# ServiceLoader support
-keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {}
-keepnames class kotlinx.coroutines.CoroutineExceptionHandler {}
-keepnames class kotlinx.coroutines.android.AndroidExceptionPreHandler {}
-keepnames class kotlinx.coroutines.android.AndroidDispatcherFactory {}

# Most of volatile fields are updated with AFU and should not be mangled
-keepclassmembernames class kotlinx.** {
volatile <fields>;
}

然后重新编译打包发版吧~

找到实习后,挺长一段时间没更新了。

《人升》的话,最近接入了Crashlytics,更新了金币系统等等。

回忆一下Crashlytics的接入过程~

为什么选择Crashlytics?

  • 不需要额外权限

    而国内很多崩溃统计向的都有不少权限要求,比如友盟统计必须依赖READ_PHONE_STATE等权限。

  • 国内也能访问

    是的,虽然Crashlytics属于Firebase,但是并没有用到Google的服务器。

  • 配置简单,不需要额外代码

    这一点我也很惊喜,只需要在Gradle文件里进行一些配置。项目代码甚至不需要任何变动。

  • 能直接在Crashlytics后台看到混淆前的堆栈信息

另外除了崩溃分析/管理功能外,其实还能在控制台看到活跃用户统计、用户行为分析、次日留存率、版本情况等等。

查看这些信息感觉很有助于维持更新兴趣~

总体来讲,感觉Crashlytics很适合独立开发者使用。

接入Firebase以及Crashlytics

Crashlytics已经被并入了Firebase体系,所以要先接入Firebase。

Fabric虽然还能直接加入Crashlytics,但是仅提供支持到2020年3月31号,官网也在建议用户迁移至Firebase。

接入Firebase可以参考官方教程

流程可以概述为:

  1. 创建Firebase项目

  2. 注册应用,上传签名的SHA码

    这两步在官网跟着流程走就可以,就不详细说明了。

  3. 下载 google-services.json放到项目的模块目录(一般是app文件夹里)中。

  4. 项目级gradle文件里加入Firebase和Crashlytics配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    buildscript {
    ...

    repositories {
    // 加上这两个仓库地址
    google()
    maven {
    url 'https://maven.fabric.io/public'
    }
    }
    dependencies {
    classpath 'com.google.gms:google-services:4.3.0' // Google 服务
    classpath 'io.fabric.tools:gradle:1.29.0' // Crashlytics 插件
    }
    }
  5. 模块级gradle文件里加入:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    apply plugin: 'com.google.gms.google-services'
    apply plugin: 'io.fabric'

    dependencies {
    ...

    /** firebase **/
    implementation 'com.google.firebase:firebase-core:17.0.0'
    implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'

    }

    到这一步为止,其实已经集成完毕了。

  6. (可选)如果你的应用开启了代码混淆的话,建议在proguard-rules.pro文件里加入以下规则,以便拿到混淆前的堆栈信息:

    1
    2
    3
    4
    5
    6
    # Crashlytics
    -keepattributes *Annotation*
    -keepattributes SourceFile,LineNumberTable
    -keep public class * extends java.lang.Exception
    -keep class com.crashlytics.** { *; }
    -dontwarn com.crashlytics.**
  7. 测试一下崩溃吧

    在相应的地方可以用以下语句制造一个崩溃,然后过几分钟后,前往Firebase的后台查看崩溃信息吧~

    1
    Crashlytics.getInstance().crash() // 制造一个崩溃

更多玩法

更多Crashlytics的用法可以参考官方的页面,比如可以记录try-catch住的异常,自定义一些key-value信息方便分析崩溃等等。

Original Publish

这件事的最恐怖之处在于,既不是意外,也不是群体作案,只是一个恶魔因不明原因想报复就造成了这么大的损伤。

京阿尼在日本动画业界是独树一帜的存在:几乎所有的工作都是内部员工完成,培养自己的原画师,福利制度,以及完全不用担心的作品高质量。只因为一个疯子就损失了大半有生力量。

7月18号,早上看到京阿尼工作室遭纵火的消息。初还不相信,看到死亡1人的时候还觉得不是特别严重。然后看着死亡人数慢慢升到了33人,再后来变成34人遇难。心情非常复杂,难受。又忍不住继续看事件的报道更新,然后继续难受。

一开始是看了《K-ON》接触到了京阿尼,动画演绎的形式让这部音乐题材的漫画焕发了新生。初还觉得不会对音乐类的动画感兴趣,看完感觉真香。原来日常都能演绎得这么温馨有趣!

后续看了京阿尼的其他作品,无一不是制作精良。生活忙碌之后,虽然有几部京阿尼的番剧还没看,但想着,有京阿尼在,优秀的番剧总会源源不断地产出吧,囤着慢慢看也不迟。但…

希望奇迹能发生,希望不要再有遇难人数增加了。希望我们还能再遇见京阿尼。

也希望各方能依此次事件加强安保,减少、杜绝这种个人恐怖袭击事件。


另外,看到一些幸灾乐祸和道德绑架捐赠者的言论也很是难受。

拿捐赠来说,他人捐赠何方是他人意愿,哪容得你一个外人干预。甚至你可以去呼吁不要捐赠,但请不要恶意评论捐赠者。更何况,我甚至怀疑那些人可曾进行过捐赠。

不过,他们也不会看这些的吧。


收到多次需要夜间模式的反馈,就研究了一下要怎么实现~

本以为需要手动替换Theme,实际上Android已经提供了相应的功能。

实际使用之后才发现,Fragment能实现到和Activity在使用上分辨不出的效果。

依赖

首先是依赖,需要使用appcompat:(我这里用的androidx库,support库同理)

1
implementation 'androidx.appcompat:appcompat:1.1.0-beta01'
阅读全文 »

参考: https://www.jianshu.com/p/93bb4d049955

最近的一条记录

如果只是需要修改最近的一条记录的话,只需要

1
git commit --amend --author="作者名 <邮箱@xxxx.com>"

注意:这里的尖括号是要带上的。

多条记录

1
2
3
4
5
6
7
8
9
10
# 第一步,(n)代表提交次数
git rebase -i HEAD~n
# 第二步
然后按`i`编辑,把`pick` 改成 `edit`,按'Esc'退出编辑,按`:wq`保存退出
# 第三步
git commit --amend --author="作者 <邮箱@xxxx.com>" --no-edit
# 第四步(多条记录的话,会跳转到下一条记录,返回第三步)
git rebase --continue
# 第五步(全部完成后,覆盖远程git记录,危险操作要谨慎操作)
git push --force

非常多条记录更改

转自网络:

如果是多个修改,那么就需要使用到git filter-branch这个工具来做批量修改
为了方便大家使用,封装了一个简单的shell脚本,直接修改[XXX]中的变量为对应的值即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/sh

git filter-branch --env-filter '

an="$GIT_AUTHOR_NAME"
am="$GIT_AUTHOR_EMAIL"
cn="$GIT_COMMITTER_NAME"
cm="$GIT_COMMITTER_EMAIL"

if [ "$GIT_COMMITTER_EMAIL" = "[Your Old Email]" ]
then
cn="[Your New Author Name]"
cm="[Your New Email]"
fi
if [ "$GIT_AUTHOR_EMAIL" = "[Your Old Email]" ]
then
an="[Your New Author Name]"
am="[Your New Email]"
fi

export GIT_AUTHOR_NAME="$an"
export GIT_AUTHOR_EMAIL="$am"
export GIT_COMMITTER_NAME="$cn"
export GIT_COMMITTER_EMAIL="$cm"
'

以此文总结一下《LifeUp》上架 GooglePlay 的全过程~

多语言

App默认会根据系统语言加载不同的字符串资源文件,这是我们实现多语言的基础。

新建资源文件

首先是建立相应的资源文件,可以手动建立,也可以用 Android Studio 的选项建立:

右键 res 文件夹选择File–>New–>Android resource file选择 Locale

可以见到下图

选择你要新建的语言,并且改文件名为strings即可。

实际上,就是新建一个value-(语言缩写)的文件夹(简体中文的话就是value-zh),然后在其中放上string.xml文件。

提取代码、Layout中的字符串

点击相应的字符串,按下ALT+ENTER,然后选择 Extract string resouces

然后输入字符串资源的名称,勾选相应的资源文件:

按下确定后,AS就会提取该字符串到资源文件内了,同时代码会被替换成:

Context getString(resouceId)

在Layout中操作同理,利用这个操作可以替换掉App内大部分的静态的字符串。

那么需要动态赋值的字符串该怎么办呢?

阅读全文 »

Toolbar 默认配置下,标题和Navigation icon(比如返回按钮)之间的间隔会迷之过长,

可以通过配置toolbar的属性调整:

1
app:contentInsetStartWithNavigation="0dp"

这个间隔的设计好像是配合没有Navigation icon的情况的,默认值为16dp。

有Navigation icon的情况下应该手动调整。

完整的Toolbar配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">

<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:contentInsetStartWithNavigation="0dp"
app:popupTheme="@style/AppTheme.PopupOverlay" />

</com.google.android.material.appbar.AppBarLayout>

简介

之前在《人升》的桌面小部件,实现ListView中的点击事件监听的方式是:

使用fillInIntent发送广播到Widget类中,并在onReceive方法中拦截,处理业务逻辑。

但是,

Widget的本质是个广播接收器,不适宜在里面处理耗时操作。

(完成团队事项的时候需要发送网络请求,普通事项需要更改数据库,都可以视为是耗时操作。)

所以,我决定改用IntentService处理完成事项的业务逻辑。

IntentService的特点是后台运行、自动销毁、异步运行。

首先尝试直接用fillInIntent启动服务失败了。

然后改成了先发送广播,然后在Widget类中,并在onReceive方法拦截再启动IntentService:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
override fun onReceive(context: Context, intent: Intent) {
super.onReceive(context, intent)

if (...) {
...
} else if (intent.action == FINISH_TASK) {
// 将耗时操作交给IntentService完成
val finishIntent = Intent(context, FinishTaskIntentService::class.java)
if (intent.extras != null) {
finishIntent.putExtras(intent.extras!!)
}

try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.startForegroundService(finishIntent)
} else {
context.startService(finishIntent)
}
} catch (e: Exception) {
e.printStackTrace()
ToastUtils.showShortToast("完成事项似乎出现了一些问题,请尝试刷新下。", LifeUpApplication.getLifeUpApplication())
}
}
}

然后就遇到了坑。

阅读全文 »