- 博客(38)
- 资源 (2)
- 收藏
- 关注
原创 ThreadPoolExecutor
为什么要用线程池呢?通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 线程池的创建ThreadPoolExecutor的构造方法ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTi...
2018-09-28 18:50:56
728
原创 Gradle插件入门
实现 Gradle中插件可以分为两类:脚本插件和对象插件。 脚本插件: 脚本插件就是一个普通的gradle构建脚本,比如a.gradle 在a.gradle脚本中定义一系列的task。另一个构建脚 本b.gradle通过apply from:'a.gradle'即可引用这个脚本插件。 对象插件:是...
2018-09-27 18:26:57
1462
转载 ART和Dalvik区别
从Android5.0开始废弃了Dalvik,全面推行ART。Dalvik与ART的区别(1)在Dalvik下,应用每次运行都需要通过即时编译器(JIT)将字节码转换为机器码,即每次都要编译加运行,这虽然会使安装过程比较快,但是会拖慢应用以后每次启动的效率。而在ART 环境中,应用在第一次安装的时候,字节码就会预编译(AOT)成机器码,这样的话,虽然设备和应用的首次启动(安装慢了)会变慢,...
2018-09-10 14:14:18
7597
原创 LeakCanary原理
1. LeakCanary是帮忙我们查询内存泄露的,只需要简单的继承,当发生内存泄露时,就会在手机的桌面上生成内存泄露的文件,.hprof 文件。打开文件大概如下图,帮助我们分析内存泄露的原因2. 原理通过registerActivityLifecycleCallbacks 检测Activity的生命周期。 在Activity执行onDestroy时,开始检测。检测之前,介绍一...
2018-09-10 11:06:17
4331
原创 java return 与finally的关系
1、不管有木有出现异常,finally块中代码都会执行; 2、当try和catch中有return时,finally仍然会执行; 3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行...
2018-09-07 15:45:57
342
原创 bug漂流记
手机系统报错引发的惨案 app的开发中,发现app会出现崩溃,进一步发现只有特定的某个机型的某个版本出现这种情况,其他都是正常的,所有我们怀疑手机对系统framework.jar做了什么手脚。通过日志一看,果然如此.......目录 日志确认问题所在反编译手机系统,查看代码hook有问题的部分,解决崩溃问题日志确认问题...
2018-08-09 20:22:05
320
原创 抓网络日志的方法
工具一:=========tcpdump===============看不了https tcpdum 调用命令tcpdump -vvv -nnn -s0 -s然后用shark打开看=========tcpdump=============== 工具二:==================zap========================可以看htt
2016-07-15 16:57:41
792
原创 线性布局居中不起作用等
一居中问题相对布局 TextView 1.当android:layout_width="match_parent"的时候 如果想居中用android:gravity="center_horizontal" 这个时候android:layout_gravity="center_horizontal"不其作用,设背景色看一下,就会知道,
2016-06-29 14:17:47
4762
原创 android中fragment的4个小问题
1. 清空fragment回退栈int count = getActivity().getSupportFragmentManager().getBackStackEntryCount(); BackStackEntry backStack = getActivity().getSupportManager().getBackStackEntryAt(i); getActivi
2016-06-27 14:14:29
1707
翻译 android - 如何在webview中调起拨号
在我的app中,我要在webview中打开url,这个url包含一些界面,对应拨号功能,现在希望,如果点击电话号码,直接调用拨号,并且号码已经输入好,不需要手动输入。 webView.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view
2016-05-09 17:01:35
5075
原创 android创建一个旋转动画
1.在drawable中 android:drawable="@drawable/****" android:pivotX ="50%" android: pivotY="50%" android:fromDegrees="0" android:toDegrees=360">
2016-04-20 15:32:29
448
原创 PreferenceFragment 使用-> 自定义preferences的布局
PreferenceFragment 使用-> 自定义preferences的布局1.***Fragment 继承 PreferenceFragment2.重写public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceSt
2016-04-20 15:28:16
4606
转载 scaleType 缩放类型 类型
1.缩放类型类型特点matrix保持原图大小,从左上角开始,以矩阵形式绘图fitXY将原图进行横方向(即XY方向)的拉伸后绘制fitStart将原图言左上角,安比例缩放原图绘制fitCenter将原图言最上方居中的点,按比例缩放原图绘制fitEnd将原图最下方居中的点,按
2016-04-15 18:09:38
2007
原创 linux上xls文件转db文件的方法
方法1: 登陆:http://converttosqlite.com/convert/ file To Content 上传需要转的xls文件(请提前修改列的文字为英文)并且勾选”Fist Row Contains Column Names“ 点击上传 填写表格名字,和最终文件名字 点击”Convert“ 生成 **.sqlite文件。 方法2:
2016-04-01 13:40:29
1418
原创 android ListView 基本常识一些个数的方法
ListView的一些常识获取数量的一些方法总结一些个数的方法1.public int getCount()方法注释:Adapter的item个数,可能比view显示出来的要多.当然如果设置了header和footer的话,getAdapter和我们的setAdapter就不是一个adapter,新的adapter的count会比我们set的要多.2.get
2016-02-03 14:43:46
2734
翻译 android中如何把`content://media/external/images/media/Y`转换为`file:///storage/sdcard0/Pictures/X.jpg`?
查询内容解析器,找到文件存储地址public static String getRealPathFromUri(Context context, Uri contentUri) { Cursor cursor = null; try { String[] proj = { MediaStore.Images.Media.DATA };
2015-11-17 16:53:37
146991
1
原创 用ssh登陆远端主机
ssh 用户名@远端主机的地址 // ssh user@192.168.1.1 yangzin/lsssssdfel12yes123456 //密码暂时回到本地 ~^Z 切换远端jobs fg %1退出登陆exit mysql -u lili -p ssdard -h
2015-11-06 20:41:59
662
原创 查询android资源R对应的空间
代码有R对应的值 想知道他具体是什么步骤 ;1. 把R的值 转换成 16 进制 因为代码是10进制 R是16进制 2. 去 out/target/common/obj/APPS/×××××intermediates 搜索这个16进制数字对于的文件 grep 16进制这个数字 * -rlinux把10进制数字转化为16进制的命令echo 'ibase=1
2015-11-06 20:41:01
632
原创 好用的搜索命令grep
好用的搜索命令grep -nr --include=\*.java 你想查询的字符串 ./好用的查询调用方案Log.d("tag", Log.getStackTraceString(new Throwable()));
2015-11-06 20:34:34
540
原创 烧机命令
adb reboot bootloaderfastboot oem unlock fastboot flash boot boot.imgfastboot flash system system.imgfastboot flash userdata userdata.imgfastboot flash recovery recovery.imgfastboot fl
2015-11-06 20:32:53
5163
原创 远端绑定Service第三篇之客户端的Service
1.ServiceConnectionprivate class H****DataConnection implements ServiceConnection { @Override public void onServiceConnected(ComponentName name, IBinder binder) { r***tManager = I*****
2015-11-06 20:27:21
654
原创 远端绑定Service第二篇之服务器端的Service
1.×××Service extends Service写一个Service2.public IBinder onBind(Intent intent) {return mBinder;}重新onBind方法3.private final I××××nager.Stub mBinder = new IL×××etManager.Stub() {@Overri
2015-11-06 20:22:48
571
原创 远端绑定Service第一篇之AIDL进程间通信
1.定义aidl文件——————AIDL进程间通信1.AIDL的作用 在Android平台,每个应用程序App都运行在自己的进程空间。2.创建.aidl文件, 不同的是要显示import 复杂类型,即便复杂类型对象在同一个包内。 /当时我就没有导入,因为在一个包我认为不用导,一直说类找不到 不需要import Java基本数据类型 (int, long, cha
2015-11-06 20:14:34
518
原创 布局文件中控件中加入extra中的值
android:key="contact" android:title="@string/contacts_settings" android:fragment="******Fragment" android:widgetLayout="@*android:layout/preference_widget_arrow"> android:key="note"
2015-11-06 20:08:02
634
原创 检查 android.mk条件如果执行,在android.mk中打印日志信息
ifeq ($(TARIER), happy) $(shell echo "test happy">>$(LOCAL_PATH)/echo_file) LOCAL_MANIFEST_FILE := happy/AndroidManifest.xmlelse ifeq ($(TARIYYER), sad) $(shell echo "test sad">>$(LOCAL_PAT
2015-11-06 20:05:29
1929
原创 字符串的加密与解密
package com.*****.util;import android.util.Base64;import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySpec;import java.security.Key;/** * Created by 88 on 15-10-16. */public class
2015-11-06 19:53:18
723
原创 如何新建一个menu
1.在res 下的menu文件创建一个xml文件比如menu_multi_select.xml2.设置文件内容xml version="1.0" encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu_select" andr
2015-11-06 19:49:30
966
原创 发本地广播
连接手机,命令如下adb rootadb shellam broadcast -a com.***.ACTION_RECEIVE_***_MESSAGE手机收到本地发出的广播。
2015-11-06 19:48:22
284
原创 service 里面弹对话框
想在service使用 BottomSheet1.错误 Dialog的context要求是一个activty 说activity上面挂dialog2.写一个actiity 主题是对话框,在service跳到activity, 这里要重新setFlag new_task,不然会报错, 把Dialog放到Activity中错误,Dialog不是view没有办法写到activtiy的布局文件
2015-11-06 19:44:03
567
转载 ListView的分割线
ListView android:id="@+id/local_groups_list" android:layout_width="match_parent" android:layout_height="wrap_content" android:divider="@color/divider_color" android:dividerHeight="1px" /> Lis
2015-11-06 19:40:52
564
转载 listview点击事件失效
1., 一种是 item中存在 ImageButton 等可以点击的组件,这会抢先获得ListView的焦点. 从而导致item点击失效. 2.适配器的getView中处理TextView的时候,调用了适配器的notifyDataSetChanged. 在notifyDataSetChanged之后导致item失去焦点. 3.item 有setClickable(true) se
2015-11-06 18:53:48
1330
转载 简单的使用curl命令
linux curl是通过url语法在命令行下上传或下载文件的工具软件,它支持http,https,ftp,ftps,telnet等多种协议,常被用来抓取网页和监控Web服务器状态。 time curl -X PROPFIND 域名 -H "token:1******K" -H "Have-Deleted:1" -H "devid:--*******"
2015-11-06 18:51:31
637
原创 cherry-pick冲突的情况如果处理
cherry-pick冲突 又不想重新下代码 解决方法: git fetch ** 所有分支git branch -agit checkout -b 本地随便起一个名字 remotes/**** 这样本地分支对应的远端分支已经改变,解决冲突后,重新repo upload . 其中(remotes/*****为远程分支)
2015-11-06 18:49:57
2578
转载 Activity启动模式
1.使用方法:Intent settingsTop = new Intent(android.provider.Settings.ACTION_SETTINGS);settingsTop.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);getActivity().startActivity(settingsTop);2.几种模式的简单介绍A
2015-11-06 18:35:58
467
原创 android 远程bindService的步骤
1.创建serivce2.onBind要返回一个bind创建aidl, 需要暴露的方法(新建不能选择类,选择机器人)3.在Android.mk文件中写aidl的路径例如:LOCAL_SRC_FILES += src/com/.../aidl/backup/IBackupManager.aidl4.实现aidl的接口private final IBackupManag
2015-11-06 18:27:00
746
原创 ListView.setEmptyView不起作用
可能的原因:1. 修改布局文件,使得ListView和EmptyView是兄弟的关系,在一个parent布局的下面。例如: android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1" >
2015-11-05 16:57:16
514
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人