![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
Code-Dreamer
梦想从每一天的搬砖开始!!!
展开
-
Android应用开发之锁屏上显示Activity
应用场景锁屏上显示Activity的需求,很多应用有这个场景需求,如音乐锁屏、QQ锁屏消息、系统的来电界面等API介绍API level 27之前WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKEDdeprecated in API level 278.1开始FLAG_SHOW_WHEN_LOCKED被废弃,兼容之前系统版本可以使用getW...原创 2020-03-02 20:02:51 · 4289 阅读 · 0 评论 -
compile、implementation和api
问题最近android studio在打开项目后,自动同步build.gradle配置的时候,Build窗口总是提示:Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.It will be removed at the end of 2018. For more ...原创 2018-09-21 10:32:50 · 667 阅读 · 0 评论 -
App变现之Admob原生广告
Admob介绍admob是Google的移动广告平台,集成admob的SDK到APP中,获取广告数据展示出来,可以给我们带来广告收益。对于大流量的应用,如果可以在合适的位置,无缝的加入广告,可以带来可观的广告收入,这已经是一个公开的成功商业模式。有心的小伙伴可以往这个方向尝试,财务自由指日可待哦!先上张admob原生广告的效果图,这是一张内容类型的原生广告。Admob广告类型Admob...原创 2018-10-23 19:57:19 · 6171 阅读 · 0 评论 -
Android Kotlin开发之Hello World
Kotlin简介Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。Kotli...原创 2018-10-26 10:22:39 · 566 阅读 · 0 评论 -
RecyclerView你所不知道的秘密
问题是什么问题还要从接入百度广告说起,这里要说的是百度原生广告,接入过广告的同学可能知道,接入广告SDK,广告的点击事件基本都是由SDK处理的,开发者只需要传入需要被点击的View即可。虽然这给开发者省了不少事,有时候出了问题,反而会阻碍我们去分析问题。下面这个接口,就是向百度广告用来注册点击事件的接口:NativeAd.registerViewForInteraction(View vie...原创 2018-11-09 11:49:27 · 508 阅读 · 0 评论 -
App变现之百度原生广告
DU Ad platform简介DU Ad platform,即百度移动广告平台,该平台面向个人和企业用户,提供广告接入服务,以SDK的方式集成到App中。集成入门添加应用和广告单元步骤:1、打开官网http://ad.duapps.com/zh_CN/,注册登录2、选择"我的应用"标签,添加应用3、点击已创建应用的右侧编辑按钮,进入编辑页面,创建广告单元创建应用:创建广告单...原创 2018-11-09 16:11:37 · 894 阅读 · 0 评论 -
Launcher3中wait、notify应用场景分析
wait、notify方法介绍wait和notify是Java中的两个方法,可以用于线程间的协作,最典型的应用就是生产和消费者模式。不过,没有真正用过的同学可能会认为它们是Thread或者Runnable的方法,其实不然,它们是Object父类的方法。先看下Object.java中wait和notify方法的定义:wait方法: public final void wait(long...原创 2018-11-15 09:45:43 · 765 阅读 · 1 评论 -
Launcher3之Workspace数据库首次初始化分析
引言在Android手机上,我们通常说的桌面其实就是launcher应用,更狭义一点就是workspace,workspace是桌面在实现时的抽象定义。桌面上显示的应用图标、文件夹和小部件都是显示在workspace中的,我们可以增删应用快捷图标,增删文件夹,增删小部件,但是这些桌面上显示的元素状态是怎么保存下来的呢?答案是,launcher使用了一个专门的数据库保存了这些状态,以便下次重启后依...原创 2018-12-04 20:07:11 · 1130 阅读 · 0 评论 -
Launcher3之XmlPullParser解析Workspace默认配置过程分析
引入上一篇介绍了Workspace数据库和表的创建过程,本篇接着上一篇介绍下,workspace首次加载默认配置到数据库的过程。这个默认配置是什么呢?就是我们首次使用launcher的时候,桌面上默认显示应用图标、文件夹、小部件等元素的配置。在实际的项目中,需要按照需求去配置哪些应用图标需要显示,哪些需要隐藏,就是在这个默认配置文件中修改的,这个文件就是default_workspace.xm...原创 2018-12-12 16:04:24 · 684 阅读 · 0 评论 -
Android Studio如何支持java8特性
Android Studio对Java8特性的支持Android Studio 3.0及以上版本支持所有Java7语言功能,以及部分Java8语言功能,这里要注意一下,不是所有Java8特性都支持。Android官网罗列的:支持的Java 8语言功能和API使用默认工具链所谓默认工具链,就是Android studio官方自带的工具集,用于Java8特性编译处理,非第三方工具,当然兼容性和...原创 2019-01-11 11:43:01 · 4948 阅读 · 0 评论 -
Launcher3之新安装应用加载过程分析
引言对于Android手机用户来说,每天接触着各式各样的手机应用,应用的安装、更新和卸载操作并不陌生,更不用说看这篇文章的开发者了。那么,当一个新应用安装完成以后,launcher中需要做哪些事情,来完成向用户提供应用图标入口的功能呢?该篇我就跟大家来探讨下,新应用安装后,launcher中的加载过程。Workspace新应用加载过程分析1、外部交互接口应用安装的实现并不是launche...原创 2019-01-17 14:00:11 · 1841 阅读 · 0 评论 -
Launcher3之HandlerThread应用场景分析
HandlerThread是什么?HandlerThread是android SDK中android.os包下的类,继承于Thread类,所以是一个线程类,它存在的价值是什么呢?答案就是,HandlerThread可以创建一个自带Looper的线程,自动处理Looper创建时的同步问题。HandlerThread源码简析public class HandlerThread extends T...原创 2019-01-09 11:09:40 · 293 阅读 · 0 评论 -
Launcher3之应用卸载过程分析
引言在之前的文章,"Launcher3之新安装应用加载过程分析"一文,已经跟大家分析了新应用安装的过程,这篇文章再跟大家分享下它的姊妹篇,launcher3中应用卸载的过程。应用卸载过程分析1、launcher中卸载的发起对于用户来说,Android手机中,应用的卸载入口大概就两个,一个在系统设置,一个是在launcher中通过拖动图标触发。这里从代码层面,来看下launcher中是怎么触...原创 2019-01-23 17:48:34 · 3394 阅读 · 0 评论 -
Launcher3之IconCache实现分析
IconCache类简介分析IconCache源码之前,先了解下这个类在launcher中扮演了什么样的角色?从字面可以看出,它是一个缓存类,缓存了跟Icon相关的信息,实际它主要缓存了应用的桌面图标bitmap和label,除了memory缓存,还持久化到了数据库。下面我们就具体看下源码实现。Icon资源获取每个应用Icon的图标资源是怎么获取到的?声明下,这里我们聊的是原生aosp l...原创 2019-01-30 17:59:04 · 1857 阅读 · 0 评论 -
Android应用开发之运行时权限
运行时权限Android M即6.0开始,对于某些用户敏感权限,系统不再默认授权,不仅要在AndriodManifest中声明,还要弹出系统权限框,让用户主动授权。出于此限制,很多应用不得不修改原来的交互,加入运行时权限判断,避免因为无权限导致的功能不可用。关于应用权限的详细介绍,可以参考官方文档:应用权限下面的例子是我平时项目中的一个简单应用。代码实例public class Ma...原创 2019-03-08 11:03:38 · 187 阅读 · 0 评论 -
compileSdkVersion、minSdkVersion和targetSdkVersion的区别
compileSdkVersioncompileSdkVersion就是你创建Android项目的时候选择的SDK版本,编译过程会检查是否有使用废弃API,所以升级compileSdkVersion有助于发现是否有废弃的API,为使用新API做好准备,但是修改compileSdkVersion不会影响应用的行为,因为最终compileSdkVersion不会被打包进apk中。minSd...原创 2018-09-11 10:51:52 · 355 阅读 · 0 评论 -
AS导入Android源码
AS导入Android源码整编source build/envsetup.shlunchmake编译idegen模块mmm development/tools/idegen,在源码目录下的out/host/linux-x86/frameworks/目录下生成了idegen.jar文件development/tools/idegen/idegen.sh在根目录下...原创 2018-09-07 15:01:07 · 654 阅读 · 0 评论 -
android-apt和annotationProcessor
几个名词APT是什么apt是Annotation Processing Tool的缩写,顾名思义,就是注解处理工具,用于编译时对注解进行解析,自动生成代码,并编译代码生成class文件,大体就是这个过程。android-apt是什么android-apt是一个开发者开发并开源的注解处理框架,因为一开始Android没有默认的支持,dagger、ButterKnife等流行的...原创 2018-09-10 18:04:26 · 719 阅读 · 0 评论 -
EditText在XML布局中设置inputType后hint字体会改变
EditText在XML布局中设置inputType后hint字体会改变原创 2014-11-24 10:19:44 · 761 阅读 · 0 评论 -
判断程序在前台还是退到后台的方法
方法一:public static boolean isOnBackground(Context context){String packageName = context.getPackageName();ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACT转载 2014-12-04 17:20:06 · 632 阅读 · 0 评论 -
android命令
pull命令adb pull /data/anr/ E:\monkey\ adb pull /data/system/dropbox/ E:\monkey\ adb pull /sdcard/monkey.log E:\monkey\push命令adb push D:\build\SystemUI.apk /system/priv-app/SystemUI/SystemUI.apk查看内存占用a原创 2017-06-06 12:39:27 · 337 阅读 · 0 评论 -
fastboot刷入镜像
adb reboot bootloader fastboot devices fastboot -S 200M flash system system.img fastboot flash boot boot.img fastboot reboot原创 2017-06-08 17:58:07 · 2141 阅读 · 0 评论 -
ViewPager刷新数据没有生效问题
ViewPager刷新数据没有生效调用PagerAdapter.notifyDataSetChanged()方法刷新数据没有生效,解决办法:重写PagerAdapter的getItemPosition方法 @Override public int getItemPosition(Object object) { return POSITION_NONE; }转载 2017-06-09 15:45:21 · 337 阅读 · 0 评论 -
repo命令
repo init 初始化本地仓库repo init -u gerrit207:mt6580n/platform/manifest.git -b sw -m MT6580_7.0_V1.1.xmlrepo sync 同步整个项目代码同步当前目录:repo sync . 多个线程同步代码:repo sync -j8清除修改repo forall -c git reset –hard;repo for原创 2017-06-09 15:55:23 · 886 阅读 · 0 评论 -
反编译apk
反编译apk相关链接ApktoolApktool Install InstructionsApktool downloads工具准备apktool:用到aapt.exe、apktool.jar、apktool.bat三个文件,用于反编译和打包apkdex2jar:用于将classes.dex文件转换成.jar文件,classes.dex可以通过解压apk得到j...原创 2018-08-28 13:41:06 · 120 阅读 · 0 评论 -
Firebase App indexing API 本地使用
Firebase App indexing API 本地使用相关链接firebase官方文档developer官网资料developer官网training集成步骤1. 配置google-services插件,firebase app indexing API使用需要基于google services项目build.gradle: dependen...原创 2018-08-28 14:08:16 · 1640 阅读 · 1 评论 -
HandlerThread实现原理
HandlerThread实现原理HandlerThread是什么HandlerThread继承于Thread类,所以是一个线程类,它存在的价值是什么呢?答案就是,HandlerThread可以创建一个自带Looper的线程,自动处理Looper创建时的同步问题。源码简析public class HandlerThread extends Thread { @...原创 2018-08-28 19:53:11 · 664 阅读 · 0 评论 -
获取状态栏和导航栏高度
获取状态栏高度public static int getStatusHeight(Context context) { int status_bar_height = 0; int h = context.getResources().getDimensionPixelSize( context.getResources().getIdentifier(...原创 2018-08-29 09:44:11 · 1536 阅读 · 0 评论 -
aar包使用
aar包aar包和jar包的区别简而言之,jar是Java归档文件,主要包含class文件;而aar是Android扩展了jar而来的,其中可以包含资源文件,便于UI相关功能的引用。生成aar包1. 新建library module,module下build.gradle中配置插件如下:apply plugin:’com.android.library’2....原创 2018-08-29 10:50:43 · 337 阅读 · 0 评论 -
DownloadManager使用
DownloadManager介绍简介DownloadManager是一个系统下载服务,提供了一套下载API,并可以通知栏显示下载进度。API使用获取DownloadManager对象DownloadManager是一个系统服务,通过以下方式获取: private DownloadManager mDownloadManager; mDownl...原创 2018-08-29 11:45:54 · 602 阅读 · 0 评论 -
VMware 基于vmdk搭建ubuntu虚拟机
VMware 基于vmdk文件搭建ubuntu虚拟机参考资料VMware中为Ubuntu增加新的硬盘Linux 格式化扩展分区(Extended)搭建虚拟机:基于VMDK(虚拟机VMware创建的虚拟硬盘格式)准备好vmdk文件vmdk后缀文件就是虚拟硬盘文件,在虚拟机中充当硬盘的作用,系统就安装在该文件中,所以,我们可以拷贝已经安装过系统的vmdk文件,创建一个新...原创 2018-09-05 11:33:51 · 2791 阅读 · 0 评论 -
Android统一日志输出
Android统一日志输出package com.example.demo.util;import android.util.Log;import com.example.demo.BuildConfig;public class LogUtil { private static String TAG = "Demo"; private static boo...原创 2018-09-05 17:08:37 · 327 阅读 · 0 评论 -
android中Activity的四种launchMode的理解
standard:每启动一个Activity都会创建一个实例原创 2014-06-06 14:29:55 · 230 阅读 · 0 评论