每日一问

主页|每日一问

【每日一问】数据采集中有哪些常用的埋点方式?

数据采集是数据分析的基础,数据采集有多种方式,埋点是其中最主要的采集方式。常见的埋点方式主要有三种:全埋点、代码埋点、可视化全埋点。

By |2020-05-17T17:59:15+08:004月 17th, 2020|每日一问【每日一问】数据采集中有哪些常用的埋点方式?已关闭评论

【每日一问】Android 中如何实现全埋点采集 Activity 页面浏览事件?

1. 页面浏览事件采集时机 在 Android 系统中,页面浏览其实就是指切换不同的 Activity 。对于一个 Activity,通过对 Activity 生命周期的了解可知,Activity 处于前台可见的时机其实就是 onResume(Activity activity) 的回调方法。所以,当一个 Activity 执行到 onResume(Activity activity) 生命周期时,就代表该页面已经显示出来了,即该页面被浏览了。我们只要自动的在 onResume 里触发页面浏览事件(神策中事件名为

By |2020-05-17T17:59:49+08:004月 16th, 2020|每日一问【每日一问】Android 中如何实现全埋点采集 Activity 页面浏览事件?已关闭评论

【每日一问】Android 中如何采集 App 启动和退出事件?

1. App 启动和退出事件采集时机 对于 App 启动($AppStart)和 App 退出 ($AppEnd)事件而言,归根结底就是判断当前应用程序是处于前台还是处于后台。当应用启动或者从后台切换到前台时,采集 App 启动事件,当应用切换到后台时,采集 App 退出事件。 2. 判断应用是否在前台 Android 系统本身并没有给应用程序提供相关的接口来判断这些状态,所以只能借助其他方式来间接判断。业界也有很多种方案用来判断一个应用程序是处于前台还是后台。通过对比,采用 ActivityLifecycleCallbacks 来判断 App 是否在前台的方式实现比较简单,代码量少。ActivityLifecycleCallbacks 是

By |2020-05-17T18:18:27+08:004月 15th, 2020|每日一问【每日一问】Android 中如何采集 App 启动和退出事件?已关闭评论

【每日一问】在 Android 开发中,如何让 APK 瘦身?

1. APK 瘦身的好处 虽然手机的内存越来越大但是应用包大小也在增加,内存资源依旧短缺。用户自然都希望一个应用的安装包能越小越好,更小的 APK 标示着更多的用户愿意去下载和体验。面对动辄几十兆的 App 来说在非 WIFI 情况下用户会犹豫是否下载,不下载就可能因此失去了一个用户。APK 包体的大小,会严重影响推广的难度。减少 APK 的大小就显得尤为重要,所以 APK 瘦身是一项非常必要的事情。 2. APK 体积变大的原因 随着业务复杂度的逐渐增加,代码、资源文件也在不断的增加,APK 大小也在不断增加。APK 安装包体积变大的主要原因大致如下: 随着版本迭代,代码量越来越大,冗余代码越来越多。

By |2020-05-17T18:19:36+08:004月 14th, 2020|每日一问【每日一问】在 Android 开发中,如何让 APK 瘦身?已关闭评论

【每日一问】Android 中使用 WeakHashMap 有哪些好处

1. 引用类型 在 Java 中,对象的引用分为强引入(StrongReference)、软引用(SoftReference)、弱引用(WeakReference)、虚引用(PhantomReference)。 2. WeakHashMap 解析 2.1. 原理解析 WeakHashMap 中的 Entry 继承 WeakReference,而 Entry 实际是一个单向链表,当某个键不在使用时,就会被回收。 2.2. 使用场景 比较适合本地缓存机制,假设我们本地需要保存很大一批的图片对象,其中 values 是图片的内容,key 是图片的名字,此时就可以选择 WeakHashMap。  

By |2020-05-17T18:20:06+08:004月 13th, 2020|每日一问【每日一问】Android 中使用 WeakHashMap 有哪些好处已关闭评论

【每日一问】在 Android 开发中,App 全局置灰如何实现?

1. App 页面置灰需求背景 当前新冠肺炎疫情正在全球蔓延,逝世人数众多。政府政府规定今年的 4 月 4 号为哀悼日,所有互联网项目能置灰的要跟随置灰处理。淘宝、京东等部分 App 都显示为灰色,对抗击新冠肺炎疫情斗争牺牲烈士和逝世同胞的深切哀悼。在 Android 开发中如何实现全局置灰是开发人员需要解决的技术问题。 2. 如何实现 将 App 页面置灰有多种实现方案,例如,最简单的实现方式是,在 App 内置 2 套切图及对应的 2

By |2020-05-17T18:20:34+08:004月 10th, 2020|每日一问【每日一问】在 Android 开发中,App 全局置灰如何实现?已关闭评论

【每日一问】在 Android 开发中,如何进行消息推送?

消息推送(Push)指从服务器端向用户移动设备进行的主动消息推送,传输一定的信息。消息自动传送信息给用户,来减少用户在网络上的搜索时间。它主要是根据用户的兴趣来搜索、过滤信息,并将其定期推给用户,帮助用户高效地发掘有价值的信息。

By |2020-05-17T18:21:51+08:004月 9th, 2020|每日一问【每日一问】在 Android 开发中,如何进行消息推送?已关闭评论

【每日一问】在 Android 开发中,如何保证 Service 在后台不被 kill ?

保证后台 Service 一直运行不被 kill 可以提高应用存在感。对于比较常用的应用来说,让 App “活着”不是问题,但是为了带来更好的用户体验,提高用户粘性,就需要尽可能调用程序更多的服务,这样才能带来更多的用户体验;对于小众应用来说,尽可能的让 App “活着”尤其重要,通过后台服务的方式让应用存活在用户手机里也是一种存活的方式。

By |2020-05-17T18:22:10+08:004月 8th, 2020|每日一问【每日一问】在 Android 开发中,如何保证 Service 在后台不被 kill ?已关闭评论

【每日一问】在 Android 开发中,主线程 Looper.loop 为什么不会造成死循环?

在循环体内就是一段可执行的子程序,由于 for ( ; ; ) 的调度导致这段子程序持续不断的在执行,也就是持续的占用 CPU 资源, 从而导致当前线程的循环体外的子程序无法执行,导致线程卡死的状态。

By |2020-05-17T18:34:33+08:004月 7th, 2020|每日一问【每日一问】在 Android 开发中,主线程 Looper.loop 为什么不会造成死循环?已关闭评论

【每日一问】在 Android 开发中,控制 EditText 输入的字符类型有哪些方法?

在 Android App 开发过的过程中会遇到各种各样的输入相关的需求,常见的有 邮箱、手机号码、密码 等特殊格式的需求,一般情况下我们可以通过设置 android:inputType 等属性进行设置,还有一些特殊的文本比如身份证号码的输入,这个时候我们怎么做才比较合理呢?

By |2020-05-17T18:34:59+08:004月 3rd, 2020|每日一问【每日一问】在 Android 开发中,控制 EditText 输入的字符类型有哪些方法?已关闭评论