android
文章平均质量分 71
CRISTIANO Xusanduo
这个作者很懒,什么都没留下…
展开
-
gradle zip下载慢
通常在使用androidstuido时,会遇到gradlexx.zip现在很慢的情况。辣么腾讯做了个镜像,可以快速下载;这里的不是jcenter中的。是gradle文件中的gradle-wrapper.properties中的,如下图。jcenter中的,也可以使用镜像加速。百度很多具体腾讯镜像地址:https://mirrors.cloud.tencent.com/gradle/...原创 2021-01-28 16:28:11 · 478 阅读 · 0 评论 -
android回调weex android调用weex --- weex android交互
第一篇文章中,已经粗略讲述了,安卓中集成weex sdk的方法;这种情况一般用于在安卓程序中,部分界面使用轻应用,所以集成weex来代替webview实现部分网页的功能;这片文章讲述下,js如何调用android native的功能,及natvie如何主动调用js的函数。weex已经提供了一些功能,但是有一些比如:获取mac地址、封装一些natvie的自带播放功能给js使用,则需要提供js调用native的功能;当然,natvie有时候做完一些事情后,也需要主动调用js函数,告诉js接下来的动作。*原创 2020-12-22 11:32:43 · 728 阅读 · 2 评论 -
weex sdk 安卓 android集成
weex sdk集成到安卓,可以参考官网文档,但是会报错;这里总结一下可用的方法及方式;最后提供demo下载可以直接使用,不过为helloword版本;其中weex开发网页部分,需要自行进行后续处理。官方网址:week集成manifest添加权限:<!-- 网络--> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:原创 2020-12-10 14:27:06 · 717 阅读 · 0 评论 -
安卓代码实现:接收到广播后,获取广播发送者包名
需求不讲了,目的是当app收到广播时,需要获取到发送者的包名(及pid、uid)。关键字:onReceive、ComponetName、broadcasts、adb shell dumpsys activity broadcasts一、普通方法不可行一般来讲,通过如下方法,只是获取到当前的报名而非发送者包名,并非期望结果: @Override public void onReceive(Context context, Intent intent) { Log.d(TAG,原创 2020-07-23 15:31:36 · 6629 阅读 · 1 评论 -
安卓代码 实现 adb功能/shell语句/dumpsys等
有时候可能需要,在代码中执行一些adb命令,从而实现一些功能,比如pm install安装一些其他软件等。函数如下: private static String exec(String command) { Process process = null; try { process = Runtime.getRuntime().exec(command); } catch (IOException ex) {原创 2020-07-23 14:55:38 · 1188 阅读 · 0 评论 -
android 应用启动监测/拦截,白名单应用
需求:做一个系统服务或者应用;可以根据后台配置的黑白名单,禁用应用启动。如果是黑名单应用,则点击了,也无法启动。这里不做后台拉取黑名单的动作。只做 如何检测其他应用启动。检测到了,就可以禁止启动了。具体如下。这里作为非系统app来进行说明,系统app要简单一些,但差别不大。知识点及介绍参考文章如下:IActivityController调用系统hide函数反射权限签名及gradle中如何加载签名,及如何生成相关签名文件IActivityController使用IActivityCo原创 2020-07-21 16:48:32 · 4839 阅读 · 2 评论 -
搭建OpenGrok 快速索引android源码
openggrok可以快速浏览源码,查找相关文件及函数等。代码再服务器,本地使用opengrok搜索。搭建环境等都在服务器进行。代码再云上,所以各种配置也在云上配置,pc上拿到个地址,索引既可以了。tomcat下载:参考一:Linux下使用Tomcat教程(一)Tomcat官网:Tomcat下载到存放代码的服务器上。开启服务zip文件解压:授予可执行权限:cd到bin目录下,然后执行授权:开启服务:看到服务开启了。本地查看是否开启成功:打开地址 http://se原创 2020-07-20 12:01:53 · 1145 阅读 · 0 评论 -
Android adb调试 开启逻辑
暂且记录,日后详细分析:参考资料:ADB 工作原理Android user版通过adb_enable开启adb 调试 不提示对话框的流程分析adb和adbd分析原创 2020-07-15 11:47:10 · 172 阅读 · 0 评论 -
安卓 APM
APM : 应用程序性能管理2011年时国外的APM行业 NewRelic 和 APPDynamics 已经在该领域拔得头筹,国内近些年来也出现一些APM厂商,如: 听云, OneAPM, 博睿(bonree) 云智慧,阿里百川码力。 (据分析,国内android端方案都是抄袭NewRelic公司的,由于该公司的sdk未混淆,业界良心)能做什么: crash监控,卡顿监控,内存监控,增加trace,网络性能监控,app页面自动埋点,等。=================================原创 2020-07-13 10:16:10 · 808 阅读 · 0 评论 -
ActivityRecord、TaskRecord、ActivityStack以及Activity启动模式详解
原文地址:ActivityRecord、TaskRecord、ActivityStack以及Activity启动模式详解主要看下这张图,要知道activitystack、taskrecord、activityrecord的关系;activitystacksupervisor主要是管理的;activitystack、taskrecord、activityrecord三个可以当做数据结构理解。再次基础上去理解,activity的启动模式及flag就相对简单了。启动无法就是先把当前activity走pa原创 2020-06-19 17:50:33 · 610 阅读 · 0 评论 -
android 锁定方向
有些情况,当进入应用时,是横屏就希望这个acitivity一直横屏,是竖屏就一直竖屏;而不是在manifest里写死。代码掉这个函数就可以了。 @SuppressLint("SourceLockedOrientationActivity") private void keepOrientation() { Configuration mConfiguration ...原创 2020-04-30 16:08:51 · 910 阅读 · 0 评论 -
android dp sp px dpi dip density 之水落石出
android显示的一些单位density dpi dp(dip) sp px及分辨率的概念,对于这些单位,还在一头雾水?Come On,就是这篇文章了。这里为了防止每个概念都是动态的,我们把px固定,即出厂了的屏幕的像素点不会变了。(屏幕像素点大小:同样的5寸屏幕,垃圾屏的像素点大,显示模糊;好屏的像素点小,显示精细)。后面分析的前提条件都是同一块手机屏幕,px是一个定值。放大后原创 2017-05-18 17:30:37 · 1340 阅读 · 0 评论 -
线程--线程池篇
java 关于线程池的简单使用及注意点。先来看下线程池的原理图吧,来了runnable请求,进行线程的创建,到coresize之后,会进行缓存(workqueue),当缓存已满,但最大线程数为到达的时候,会接着创建新的线程执行runnable。当线程执行完某个runnable之后,会从换从中取走,去执行。当然,如果达到最大线程了,缓存也慢了,还在进行execute申请/或者是已经shutdown了...原创 2018-04-02 14:48:33 · 250 阅读 · 0 评论 -
java 反射 method invoke 变长参数
看下,反射中可能遇到的一个问题:一个类,专门用来进行测试反射相关code:public class InvokeClass { private final static String TAG = "InvokeClassDemo"; public void printString(String... args) { Log.d(TAG, "args len: ...原创 2018-04-09 15:18:21 · 3028 阅读 · 0 评论 -
鼠标如何在移动的时候根据当前控件变换形状
手机链接蓝牙鼠标后,可以用鼠标操作手机,当鼠标移动到某控件后,它的形状可能从箭头变为小手(文本链接等)。辣么google,如何实现的呢?一、先来看看图片:有好多鼠标的图片。目录随意一个存储图片的目录即可,例如:8trunk/frameworks/base/core/res/res/drawable-mdpi二、主题和属性控制:一步一步来,不急知道google如何原创 2017-11-30 15:57:31 · 1578 阅读 · 4 评论 -
menu IconMenuView ExpandedMenuView
最忌比较烦,比较烦,比你烦。骂了隔壁的,整个带图menu,为鸡毛的显示出来不带图。。为鸡毛啊???因为主题这个大SB~~~~~~发送menu按键(注意是发送,不时点击),弹出menu,这个menu在整个decorview的最底下,居中显示。这个吊过程时咋整的?为毛显示在最底下?为毛menu的xml里有图片不给我显示?我欠你钱了是吗?一、先看看咋写的demo,是不原创 2017-08-24 15:08:43 · 1350 阅读 · 1 评论 -
你不知道的坑~android原声alerdialog双指触摸必现crash
这个一个坑,安卓原声机可以必现crash。关于详细逻辑,后面再梳理并书写,目前还没梳理完成,细节还很多没有确定的。这里先把主干写一下,免得忘了。后面在逐步进行填充修改,最后本文将呈现一个详细的dispatchTouchEvent的派发逻辑:难点在多点触控,而且你会发现单点触控的逻辑就是小菜一叠。注:本文在完成终稿之前,平均干货,上trace:(末尾)关键函数:1.ViewG原创 2017-07-24 15:17:30 · 571 阅读 · 0 评论 -
onWindowFocusChanged 调用时机
切记:此函数只有在focus为true的时候回调一下app的方法,false的时候不会回调。所以不要通过true/false来做区别处理。一、问题:最近看到google原声的app中在onWindowFoucusChanged的回调中做资源回收:代码中在hasWindowFocus的时候要回收listener。结果,显而易见,TMD出现内存泄漏了。日了狗了,傻逼go原创 2017-08-16 15:15:26 · 6847 阅读 · 0 评论 -
android cts测试方法及步骤
1.CTS下载打开下面网址,http://source.android.com/compatibility/downloads.html以android5.0为例,进入页面后,点击Android 5.0 R1 Compatibility Test Suite (CTS) - ARM进行下载;当然,如果打不开上面的网址,就是网络没有翻墙,进行网络翻墙后,就可以打开网页了。2.原创 2014-12-30 10:24:29 · 18688 阅读 · 0 评论 -
如何实现Fragment的滑动
基础吧,和viewpager绑定一下,就可以滑动了。因为viewpager里面处理了touch事件,会进行move事件的滑动处理。看下例子:github地址点击打开链接 (https://github.com/shixin398/FragmentScroll)这里用两个fragment,一个viewpager;fragment布局里面就放一个textview:<LinearLayout x...原创 2018-04-16 08:47:47 · 6090 阅读 · 3 评论 -
Android 布局优化--viewstub标签
性能优化之一就是layout的优化,as 常识:布局是否合理主要影响的是页面测量时间的多少,我们知道一个页面的显示测量和绘制过程都是通过递归来完成的,多叉树遍历的时间与树的高度h有关,其时间复杂度 O(h),如果层级太深,每增加一层则会增加更多的页面显示时间,所以布局的合理性就显得很重要。那布局优化有哪些方法呢,主要通过减少层级、减少测量和绘制时间、提高复用性三个方面入手。总结如下:减少层级。合理...原创 2018-04-10 16:24:20 · 737 阅读 · 0 评论 -
Android 布局优化--merge标签
性能优化之一就是layout的优化,as 常识:布局是否合理主要影响的是页面测量时间的多少,我们知道一个页面的显示测量和绘制过程都是通过递归来完成的,多叉树遍历的时间与树的高度h有关,其时间复杂度 O(h),如果层级太深,每增加一层则会增加更多的页面显示时间,所以布局的合理性就显得很重要。那布局优化有哪些方法呢,主要通过减少层级、减少测量和绘制时间、提高复用性三个方面入手。总结如下:减少层级。合理...原创 2018-04-04 15:37:28 · 1443 阅读 · 0 评论 -
android5.0 音乐播放,加载extractor
android5.0和以前的版本有变动,音乐播放不在走awesomeplay,audiotrack了;现在走nuplayerdriver,nuplayer,nuplayerrender。音乐播放:1。mediaplaystatus_t MediaPlayer::prepare(){ status_t ret = prepareAsync_l(); }原创 2014-12-22 21:08:35 · 1891 阅读 · 0 评论 -
AndroidStudio编译时报错Error:Please select Android SDK
原地址:https://mp.csdn.net/postlistAndroidStudio编译时报错Error:Please select Android SDK如下图所示,编译的时候报错Error:Please select Android SDK,是app下app.xml(文件名视项目名而定)配置错误引起的。找到app目录下app.xml文件:此行代码可能缺少或者与本地环境不一致,改...转载 2019-07-04 17:54:57 · 164 阅读 · 0 评论 -
cordovar 项目创建及自定义plugin创建(添加lib库)和添加
cordova是混开中常用到的地方放框架,主要优点是可以搭建一套js代码,使用多个平台(android、ISO、window等)。详细的不过多介绍,只讲一下,如何创建一个cordova项目、创建一个自定义plugin、plugin中添加lib库、把plugin添加进项目。cordova环境搭建可以参考官网或百度:https://cordova.apache.org/docs/en/8.x/gui...原创 2019-01-31 17:09:43 · 946 阅读 · 0 评论 -
Android LowMemoryKiller相关
相关名词:关键名词:adj、minfree此关键名词:oom_score、oom_score_adj、oom_adj内存相关:total、free、used、lost、VSS、RSS、PSS、USS这里不讲解adj与lmk水位相关基础知识,重点在:如果不适用google的配置策略,如何使用自定义的水位的方法。google的策略就是根据实际内存及屏幕尺寸来计算lmk的水位,一般够...原创 2018-07-24 11:41:22 · 1681 阅读 · 0 评论 -
AMS之开机启动Launcher、开机广告后启动Launcher、Launcher启动activity
activity的启动关闭最终都是由AMS控制的。从刷了rom到第一开机引导、launcher启动、点击启动特定app,这之间ams控制开机引导activity、launcher、app启动有什么不同吗?还是same流程?下面让我们一探究竟。文章分三部分:第一部总体概述、第二部分流程图、第三部分讲解下具体一些细节点。一、总体概述:无所做什么,一定先是了解概况,然后在看细节,不然就是只见树木不见森林...原创 2018-07-02 16:22:16 · 1797 阅读 · 4 评论 -
Android 事件分发
不详细介绍事件分发的流程和逻辑。这里关注一下activity view对于touch/key事件接受处理的先后顺序。既然是activity和view的事件接受顺序,那么只考虑dispatchTouchEvent和onTouchEvent;直接看结果,然后再看why(你总的先看一眼妹子好不好看,然后在去提亲不是)结果是:1.dispatchTouchEvent:activity先响应,view后响应...原创 2018-06-07 09:01:30 · 559 阅读 · 0 评论 -
Android 更改view的index
之前app同事遇到一个问题,需要修改viewgroup中view的节点位置。给提供了一个方法,其实很多时候,这种方法在源码中都能找到的。view树中,都是有节点的,有相应的序号。可能特定需求下,需要动态变更,如何更改呢?private void bringToIndex(View child, int index) { ViewGroup mParent = (ViewGroup) chi...原创 2018-05-21 10:40:59 · 2696 阅读 · 0 评论 -
Android 布局优化--include标签
性能优化之一就是layout的优化,as 常识:布局是否合理主要影响的是页面测量时间的多少,我们知道一个页面的显示测量和绘制过程都是通过递归来完成的,多叉树遍历的时间与树的高度h有关,其时间复杂度 O(h),如果层级太深,每增加一层则会增加更多的页面显示时间,所以布局的合理性就显得很重要。那布局优化有哪些方法呢,主要通过减少层级、减少测量和绘制时间、提高复用性三个方面入手。总结如下:减少层级。合理...原创 2018-04-04 16:24:03 · 309 阅读 · 0 评论 -
layout layout-large dpi 分辨率 系统加载影响
手机屏幕大小不一,这也就需要不同的布局资源来对不同屏幕进行适配,小屏用小屏的布局,大屏用大屏的布局。那么系统如何区分大小屏,确定大小屏后,哪些参数又会影响布局的加载呢?api上讲的比较详细,我们摘出其中一部分,并进行深入剖析。API地址:点击打开链接在阅读正文之前,需要基础的知识:dp、dpi、px、分辨率这四个基本概念。什么,屏幕大小、dp、dpi的概念还不知道,辣么,叔告诉你,你该原创 2017-05-19 11:48:59 · 1453 阅读 · 0 评论 -
Android开发:shape和selector和layer-list的(详细说明)
原文地址:http://blog.csdn.net/brokge/article/details/9713041/和在Android UI设计中经常用到。比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到和。可以这样说,和在美化控件中的作用是至关重要。在看这篇文章之前,可以看下这个小例子:镂空按钮的实现1.Shape简转载 2017-05-17 15:30:56 · 345 阅读 · 0 评论 -
android 自定义主题
很多时候,系统的主题并不适用,app想要自己喜欢的主题,这个时候需要自定义一个主题。这里就简单讲述一下自定义主题的步骤。一、相关文件:主题相关的文件:AndroidManifest.xml和styles.xml文件在AndroidManifest中需要引用自定义的主题给app使用:<application android:allowBackup="true"原创 2017-03-15 10:51:13 · 2543 阅读 · 0 评论 -
android如何打印当前的线程及进程
常用语句: android.os.Process //获取当前进程的方法 android.os.Process.getElapsedCpuTime():获取消耗的时间。android.os.Process.myPid():获取该进程的ID。android.os.Process.myTid():获取调用进程的ID。android.os.Process.my原创 2015-09-02 17:24:20 · 37905 阅读 · 0 评论 -
新浪微博 AbsListView.obtainView调用关系
日前遇到Bug,出现09-01 16:26:42.916 15952 15952 E AndroidRuntime: FATAL EXCEPTION: main09-01 16:26:42.916 15952 15952 E AndroidRuntime: Process: com.sina.weibo, PID: 1595209-01 16:26:42.916 15952 15952原创 2015-09-03 15:53:48 · 1253 阅读 · 0 评论 -
adb push 。。。显示:No space left on device
当编译完了so,或者jar想要push到手机里时,出现了No space left on device这样的问题。可是打开手机看存储内存还很多,这是弄啥嘞?其实so和jar使用的并不是你在手机存储中看见的空间。sudo adb rootsudo adb remount一定要进行这两个命令,不然到第4部,你会遇到问题。1.sudo adb shell2.su3.查原创 2015-08-06 16:12:16 · 13641 阅读 · 0 评论 -
systemdump文件查看方法
当手机关机或者其他原因导致系统崩溃,产生重启的现象。但是手机重启的时候,是没有main.log的,关机的时候log的线程被kill掉了,只有uboot的log还可以通过串口抓取。但是当发生crash而引起的重启,是有一份crash报告和一份systemdump的。开机后,将手机的log抓取出来crash报告,一般在dropbox文件夹下,system_server_crash.原创 2015-09-01 15:07:23 · 4152 阅读 · 0 评论 -
android 设置字体颜色 颜色大全
改变Android的hello world程序字体颜色和背景颜色1、使用Color类的常量,如:int color = Color.BLUE; // 创建一个蓝色 是使用Android提供的颜色2、通过ARGB构建,如:int color = Color.argb(127, 255, 0, 255); // 半透明的紫色其中第一个参数表示透明转载 2015-08-06 13:49:27 · 2290 阅读 · 0 评论 -
android.view.cts.DisplayRefreshRateTest failed
遇到个CTS问题android.view.cts.DisplayRefreshRateTest,这个测试failed了。junit.framework.AssertionFailedErrorat junit.framework.Assert.fail(Assert.java:48)at junit.framework.Assert.assertTrue(Assert.java:20)原创 2015-08-26 16:25:21 · 2309 阅读 · 0 评论 -
android Api demo 代码编译目录
android的代码中,带有api demo部分我们可以通过编译mmm development/samples/ApiDemos/来获得out/target/product/XXXXX/data/app/ApiDemos/ApiDemos.apk编译出来以后,sudo adb install out/target/product/XXXXXX/data/app/ApiDem原创 2015-08-24 11:14:52 · 702 阅读 · 0 评论