自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 收藏
  • 关注

原创 Android 文件的读取和写入

(1)openFileInput和openFileOutput的使用文件的使用,注意最后要用finally给关闭掉。openFileOutput:(写入文件,如果没有文件名可以创建,这里不需要判断是否有这个文件)---> FileOutputStreamopenFileInput:(读取文件,没有文件名会保存,debug的时候会看到,不影响ui)---> FileInputStream 保存

2017-02-15 23:54:47 54723 4

原创 Android sqlite联合主键的使用

一、问题分析 在操作sqlite数据库的时候,在测试的时候出现了数据的一个不正常的增加,造成的数据的异常,后来发现是sql语句出现的问题。 分析:每次在上传数据的时候,可能用的是同一个包名,造成数据插不进去,就会把所有的数据都上传到服务器,这样一来就造成了数据的异常,因为每次上传,时间是不一样的,我们可以用时间和包名作为联合主键上传,这样就可以解决这个问题了。sql语句联合组键的

2016-07-09 16:35:02 7961 1

原创 Android 属性 allowBackup 安全风险浅析 具体操作流程

Android 属性 allowBackup 安全风险浅析 --> https://segmentfault.com/a/11900000025905771、allowBackup安全风险描述Android API Level 8及其以上Android系统提供了为应用程序数据的备份和恢复功能,此功能的开关决定于该应用程序中AndroidManifest.xml文件中的allowBacku...

2019-08-08 18:13:47 323

原创 滑动冲突问题解决【EditText嵌套在ScrollView】

在某些场景下,需要使用EditText来让用户输入信息。当EditText设置maxLines后,用户输入行数超过maxLines后,只能通过上下滑动来浏览所有文字。但当EditText外层使用ScrollView来让整个界面滑动时,用户触摸EditText区域时不能再显示折叠的文字,而只是滑动了整个srollview。实现时需要注意的是,当EditText框内容并未超过maxLines时,此...

2019-03-10 10:59:58 584

原创 mac软件如何实现微信双开

准备工作Xcode软件安装首先,现在 Terminal (mac上面叫终端)中拉取最新的源码:git clone https://github.com/Sunnyyoung/WeChatTweak-macOS.git复制代码然后在源码目录中进行编译:cd WeChatTweak-macOSsudo make install复制代码编译完成后重启微信即可启用插件。如果微信升级,可...

2018-12-03 15:11:00 1568

原创 Mac pro 系统升级之后出现问题解决办法

Mac pro 系统升级之后出现问题,运行下面命令之后在安装就可以了。rm -Rf /Applications/Android\ Studio.apprm -Rf ~/Library/Preferences/AndroidStudio*rm ~/Library/Preferences/com.google.android.studio.plistrm -Rf ~/Library/Appli...

2018-11-19 11:35:06 2425

原创 AndroidStudio 功能使用

shelve changes使用步骤切换分支时候保存:1.点击version control,点击local change,选中default文件,右键选择shelve changes。ok,可以切换了,切换回来,选中shelf,选择文件,选择unshelve changes。...

2018-10-22 18:41:37 690

原创 android自定义圆形图片

主要的类:package de.hdodenhof.circleimageview;import edu.njupt.zhb.main.R;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Bitmap;import android.graphics....

2018-10-16 23:10:12 438

原创 RxBus的实现及简单使用

RxJava目前已经很火了,如果你尚未了解请看这里。对于RxJava这里不多做介绍。RxBus并不是一个库,而是一种模式。相信大多数开发者都使用过EventBus,作为事件总线通信库,如果你的项目已经加入RxJava和EventBus,不妨用RxBus代替EventBus,以减少库的依赖。一、添加RxJava和RxAndroid依赖//RxJava and RxAndroidcompile...

2018-10-16 22:09:50 344

原创 WeakReference在Android中的使用ImageView设置

非UI线程处理Bitmap(可以替换为其它对象)以下摘自官网class BitmapWorkerTask extends AsyncTask { private final WeakReference imageViewReference; //注意用了final private int data = 0; public BitmapWorkerTask(Image...

2018-07-16 16:14:15 449

原创 RxBus【使用RxAndroid2.0实现RxBus】

RxBus实现1 添加Gradle://RxAndroidcompile 'io.reactivex.rxjava2:rxandroid:2.0.1'compile 'io.reactivex.rxjava2:rxjava:2.0.4'2 添加RxBus类:public class RxBus {private static volatile RxBus mInstance;pri...

2018-07-16 10:52:58 579

原创 URLConnection实现文件上传和下载

java.net包中的URLConnection类为开发者提供了网络通信的实现,可以提交GET与POST请求,也可以上传下载文件,使用Java提供的IO流与流的包装类就可以从底层实现多文件的上传。其中上传文件中所设置的每个参数都有理可依,这些参数的值是HTTP协议中的规定值,都是确定明确的。为了不使代码含糊不清,我对每行代码都写了注释。 上传文件的主要步骤: 1.创建 URL 以及 URLCo...

2018-07-09 17:18:09 714 3

原创 常见的滑动冲突场景及解决方案

常见的滑动冲突场景可以简单分为以下三种: 对于场景1, 它的处理规则是:当用户左右滑动时,需要让外部的view拦截点击事件,当用户上下滑动时,需要让内部view拦截点击事件,这个时候我们可以根据他们的特征来解决滑动冲突,具体来说就是:根据滑动时水平滑动还是竖直滑动来判断到底由谁来拦截事件。如何知道滑动谁水平滑动还是竖直滑动呢?我们可以通过两点之间的坐标,依据滑动路径和水平方...

2018-03-16 09:58:09 420

原创 CountDownLatch 使用

场景: 我们需要等待4个任务完成之后才能去执行,此时就可以利用CountDownLatch来实现这种功能了。CountDownLatch是一个同步的辅助类,它可以允许一个或多个线程等待,直到一组在其它线程中的操作执行完成。一个CountDownLatch会通过一个给定的count数来被初始化。其中await()方法会一直阻塞,直到当前的count被减到0,而这个过程是通过调用countD...

2018-03-12 20:59:38 576

原创 线程如何控制并发数量? Semaphore 线程协同类,用来控制线程并发数量

1、 Semaphore:线程协同类,用来控制线程并发数量,并且可以更加细粒度的进行控制, 因为真正被控制最大并发的代码放到了acquire和release之间。2、主要方法:Semaphore semaphore = new Semaphore(int count); 信号量Semaphore的初始化方法,初始值 count 表示当前的信号量,即当前所允许并发访问的线程数。...

2018-03-12 17:11:52 870

原创 Retrofit 如何添加请求头???

okhttp 拦截器添加(两种方式)

2018-03-07 15:43:59 1362

原创 Android TV适配

Android TV适配1.TV模拟器2.TV开发

2017-10-16 13:48:38 788

原创 Fragment 判断当前的fragment是否显示

public Fragment getVisibleFragment(){FragmentManager fragmentManager = MainActivity.this.getSupportFragmentManager();List<Fragment> fragments = fragmentManager.getFragments();for(Fragment fragment :

2017-10-15 21:25:43 3559

原创 java 代理实践

why ?当一个对象不能或者不想直接访问另一个对象时,可以通过一个代理对象来间接访问。为保证客户端使用的透明性,委托对象和代理对象要实现同样的接口。被访问的对象不想暴露全部内容时,可以通过代理去掉不想被访问的内容。动态代理和静态代理优缺点静态代理: 有点:业务类只需要关注业务逻辑本身,保证了业务类的重用性。这是代理的共有优点。缺点:(1)代理对象的一个接口只服务于一种类型的对象,如果要代理

2017-09-15 19:38:09 338

原创 WebView 入坑

WebView 入坑一:// 设置它用来解决微信公众号发布的文章链接 "阅读原文"无法响应的问题 settings.setDomStorageEnabled(true);WebView 入坑二:// 设置它可以解决部分手机视频不能播放的问题 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

2017-09-02 15:42:43 426

原创 adb monkey

adb 暴力测试100次点击并生成txt文件 adb shell -p 包名 -v 1000 > D://log.txt

2017-08-31 14:08:54 1639

原创 Dns解析和设置指定域名

(1)DNS介绍:网域名称系统(英文:DomainNameSystem,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。(2)域名解析理解:举一个例子,zh.wikipedia.org作为一个域名就和IP地址208.80.15

2017-07-27 23:58:40 12136

原创 Android 生产者模式和消费者模式 --- 【应用场景】

why? 在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者。为了解决这个问题于是引入了生产者和消费者模式。

2017-07-06 20:08:50 1061 2

原创 Android 线程池

线程池 : (ThreadPoolExecutor)参数详解:(1)int corePoolSize => 该线程池中核心线程数最大值(2)int maximumPoolSize => 该线程池中线程总数最大值(3)long keepAliveTime => 该线程池中非核心线程闲置超时时长(4)TimeUnit unit => keepAliveTime 的单位,TimeUnit 是一个枚举类型

2017-07-04 14:50:26 340

原创 Context启动Activity哪些坑

Context启动Activity会报 Caused by: Android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want

2017-06-29 23:40:51 4422

原创 Android adb

模拟开机启动:adb shell am broadcast -a android.intent.action.BOOT_COMPLETED

2017-06-16 12:32:39 534

原创 AndroidStudio生成javadoc文件

在Android Studio中的菜单项中点击Generate JavaDoc 2.如果你的项目中有以“UTF8”做编码的Java文件,那么你在这里必须要带上参数: -encoding utf-8 -charset utf-8 或者会报错误:

2017-06-15 11:17:16 472

原创 Android Studio 2.3 特性:生成Android App Links(App links assistant)

Android Studio 2.3及以上版本中提供了App Links Assistant协助开发者进行快速配置,该功能可在tools > App Links Assistant中开启。注意: 这里用AndroidStudio生成的app links中scheme只能是http或https连接(1)配置Intent filsters Add URL Intent filsters

2017-05-09 11:52:22 4372

原创 扩展知识

异常、堆内存溢出、OOM的几种情况面试感悟:一名3年工作经验的程序员应该具备的技能

2017-04-06 20:37:51 505

原创 Android Notification

Notification通知效果核心代码:--------------------------------------------------------/*** 最普通的通知效果*/private void showNotifyOnlyText() {   NotificationCompat.Builder builder = new Notific

2017-03-08 16:15:11 491

原创 Rxjava简介

是什么?RxJava 作为一个工具库,使用的就是通用形式的观察者模式。概念:Observable (可观察者,即被观察者)、 Observer (观察者)、 subscribe (订阅)、事件。Observable 和Observer 通过subscribe() 方法实现订阅关系,从而 Observable 可以在需要的时候发出事件来通知 Observer。RxJava

2017-03-06 12:49:49 469

原创 RecyclerView自定义分割性

/** * 自定义分割线 */public class DividerItemDecoration extends RecyclerView.ItemDecoration { private static final int[] ATTRS = new int[]{ android.R.attr.listDivider }; public

2017-02-23 15:48:50 338

原创 Handler更新ui的三种方式

1、第一种public class MainActivity extends Activity {private TextView text;private Handler handler = new Handler();@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedIn

2017-02-22 20:33:40 925

原创 Android 通过URL scheme 实现点击浏览器中的URL链接,启动特定的App,并调转页面传递参数

1、首先做成HTML的页面,页面内容格式如下:<a href="[scheme]://[host]/[path]?[query]">启动应用程序</a>例如:// 自动加载<iframe src="zhang://my.com/main" style="display:none"><h3>main页面</h3></iframe>// 点击跳转<a href="myscheme://www.or

2017-02-17 15:16:23 3469

原创 .arr文件的生成与使用

2.1用android studio打开一个工程,然后新建一个Module,新建Module时候选择Android Library,后面按新建普通工程操作2.2新建Module 类型为android Library2.3在新建的Module中编写完代码后,接下来编译整个工程后就会自动生成aar包,选中自己创建好的Module(我的就是paysdk)点击菜单栏 Build里面的Make Module

2017-02-15 23:40:32 5947

原创 安卓ADB端口被占用/ADB无法使用解决办法

首先在使用ADB前所有手机辅助类软件1、CMD命令窗口输入:adb nodaemon server 。然后就会提示你哪个端口被占用了。2、输入netstat -ano | findstr “5037” 。然后会弹出提示告诉你哪些进程占用了该端口,记住非0地址的后面的数字3、打开任务管理器,点击“进程“,“查看”-“选择列”,勾选PID4、查找第2步中看到的数字PID,然后结束相关进程,即可

2017-02-13 16:09:59 732

原创 开源日志库Logger的使用

日志对于开发来说是非常重要的,不管是调试数据查看、bug问题追踪定位、数据信息收集统计,日常工作运行维护等等,都大量的使用到。Logger库能提供的功能:线程信息类信息方法信息漂亮的json内容打印漂亮打印新行“\ n”清洁输出跳转到源添加依赖:compile 'com.orhanobut:logger:1.15'例如:Logger.d("hello");Logger.e("he

2017-01-20 20:09:07 532

原创 fastJson使用介绍

介绍:Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,

2017-01-20 13:51:33 365

原创 Android工具类---dp,px,sp之间的转换

首先介绍: px:像素 dp:长度单位 sp:字体单位public class DisplayUtil { // 将px值转换为dip或dp值,保证尺寸大小不变 public static int px2dip(Context context, float pxValue) { final float scale = context.getResource

2016-12-23 00:30:06 550

原创 数据格式化

java.text 包允许通过与特定语言无关的方式格式化文本消息、日期和数值。1. 数据格式化相关类介绍类 功能介绍java.util.* Locale 表示一个语言和区域的特定组合ResourceBundle ListResourceBundlePropertyResourceBundle 获取本地化资源中(可以表现为类和资源文件)的信息Calendar Greg

2016-12-17 13:28:22 1432

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除