自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java序列化中transient修饰符的作用

“使用网络传输对象时需要将对象进行序列化,但在某些情况下,需要序列化的对象持有其他对象的引用,出于安全考虑,我们不希望某些对象被序列化,此时就可以使用transient修饰符 标注不被反序列化对象。”

2017-04-26 10:42:16 1172

原创 关于Drawable资源被用在多个地方显示图片时,改变其中一个实例的状态会同时作用到其他实例的解决方法

在做项目的过程中发现了一个很奇怪的现象,相同的代码在两个应用中产生了不同的效果。代码具体内容是使用应用中的同一个Drawable资源创建了几个不同的ImageView实例,改变其中一个ImageView的背景透明度。img1.setBackground(getResources().getDrawable(R.drawable.theme));img2.setBackground(getResour

2017-04-22 19:49:16 1048

原创 安卓6.0关于悬浮窗导致"检测到屏幕叠加层"的开发端解决方案

安卓6.0以后当弹出权限授权框时,考虑到安全问题,如果屏幕上存在悬浮窗,会出现”检测到屏幕叠加层”的提示,导致不能正常授予权限。最简单的解决方案就是手动关闭悬浮窗了,不过这样的用户体验当然是很糟糕的,今天要介绍的方法是在弹出授权框时自动隐藏悬浮窗,授权框消失后再恢复悬浮窗。解决思路:如果能检测授权框弹出界面,就可以顺利解决问题,当然系统没有给开发者预留弹出授权框的接口,需要自己去检测界面的变化,因为

2017-03-16 16:09:38 8897

原创 Android在Service中全局监听输入法的三种可实现方式

在Service中全局监听输入法意思就是可以在任何界面都可以监听输入法,不局限于自己的APP。方法一:根据切换输入法会在通知栏显示通知实现优点:简单高效缺点:手机必须安装两个以上输入法通常语言为中文的情况下切换输入法的通知栏标题有”选择输入法”,”更改键盘”,”选择键盘”,”更改输入法”这四种,在NotificationListenerService onNotificationPosted

2017-03-15 11:52:18 4262 1

原创 通过ssh反向隧道及nginx反向代理实现外网控制内网nodemcu芯片

基本思路:通过ssh反向隧道实现外网服务器端口到内网中继服务器端口的转发,通过配置内网中级服务器nginx反向代理,将外网发过来的请求转发到目标服务器上。最后实现通过访问外网ip转到访问内网的目标服务器。(一)ssh反向隧道将外网服务器端口转发到内网中继服务器指定端口(1)首先需要指定外网中继服务器 sshd 的 GatewayPorts(转发外部主机的端口)打开中继服务器的

2016-08-04 22:53:47 4572

原创 阅读Fragment源码笔记

Fragment具有自己完整的生命周期(当然和所关联的Activity是同步的)。相比Activity更加轻量级,但同时具有同样的功能,也能够将界面划分成不同的模块或者说是碎片,更加易于管理和维护。  Fragment生命周期onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume()->o

2016-07-05 10:45:22 373

原创 阅读Service源代码笔记

启动Service有两种方法:startService()和bindService()。区别在于startService会长期运行,bindService会随着调用它的组件的销毁而销毁。  startService很简单,主要是每次调用都会传递Intent到onStartCommand()方法,然后根据不同的值进行不同的操作。  bindService相对比较复杂,与调用者在同一进程需要通

2016-07-03 16:25:42 467

原创 阅读Activity源码笔记

Activity的启动过程大概看了一下老罗的分析,真的是太复杂了。最后是由ActivityThread,通过ClassLoader获取到要启动的Activity,通过Instrumentation的callActivityOnCreate函数调用Activity的onCreate完成创建。当然activity的生命周期调度是由ActivityManagerService负责的。  1.Acti

2016-07-01 20:34:28 410

原创 阅读Handler源码笔记

学习android大半年了,今天才去阅读Handler源代码真是惭愧啊!  安卓有一道经典的面试题就是问Handler运行机制原理。包括和Looper,Thread,MessageQueue和Message之间的关系。之前不知道为什么没有去看源代码,只是简简单单的从网上搜了一下他们之间的关系,就天真的认为自己清楚了,哎,真是天真到了极点。  总结一下今天阅读Handler源码的收获

2016-06-30 19:46:21 521

原创 android获取控件测量尺寸的方法

监听控件的全局layout事件View.getViewTreeObserver.addOnGlobalLayoutListener(new OnGlobaLayoutListener(){   public void onGlobalLayout(){    //do something   //remove listener  View.getViewTreeOber

2015-12-18 10:45:45 614

原创 andriod提高开发效率的第三方类库和框架

(一) DI框架    1.  butterknife 适用于activity中的view控件 ,fragment中的view控件,以及其它adapter中的view控件的绑定,特点比较灵活,适用地方多。使用方法:compile 'com.jakewharton:butterknife:7.0.1'    2. androidannotations  适用于activity

2015-11-22 10:35:55 353

原创 floatball悬浮球总结

floatball悬浮球总结悬浮窗的实现ActionBar和ViewPager实现的Tab滑动页面ListView列表条目动态刷新获取图片浏览器返回的图片数据自定义ActionBar菜单一、悬浮窗的实现主要内容是将floatball的view添加到WindowManager中WindowManger的获取mWindowManager = (WindowManager) getAp

2015-09-27 10:29:51 1535

原创 android中使用隐藏类的方法

在某些特殊应用中需要使用隐藏类中的功能,总结一下隐藏类的使用方法。发布的SDK版本中android.jar包中不包含隐藏类的class文件,所以没办法直接使用隐藏类。使用隐藏类方法:(一)提取隐藏类的class文件(1)从编译的完整版本的SDK中提取对应隐藏类的class文件(2)从手机对用的SDK版本中的framework.jar文件中提取        

2015-09-25 18:41:25 848

原创 模仿魅族flyme自带的悬浮球floatball,通过不同的触摸方式,模拟虚拟按键

觉得魅族的悬浮球做的很不错,主要是简洁方便。于是就自己实现了一下。项目源代码:FloatingBall源代码主要是解决三个方面的问题:  1.桌面悬浮窗的实现  2.设置悬浮球触摸事件(拖动,点击,上下左右滑动)  2.模拟虚拟按键(返回,home,任务面板,电源键,菜单键等)   (一)桌面悬浮窗的实现     通过WindowManager将自定义的悬浮球布

2015-08-23 17:01:55 5920 3

原创 基于Xposed框架的锁屏录音机的实现总结

需求:在手机屏幕锁定的状态下,长按音量上键开启录音机,再次长按时停止录音.基本方法:通过Xposed框架hook类classPhoneWindowManager的interceptKeyBeforeQueueing方法,截获音量上键事件,调用录音机功能.1.创建Xposed模块的方法:     (1)在androidmanifest.xml中配置application的

2015-07-09 11:55:45 1929

转载 定时器Timer和定时任务TimerTask的用法

1、重写TimerTask中的run()方法,TimerTask实现了Runnable接口。2、Timer.schedule(TimerTask task, long delay, long period)

2015-06-23 08:32:39 688

原创 bindService用法

特点:1、会跟随Activity的销毁而销毁2、可以通过service暴露的接口,调用service中的方法用法:Activity中1、实现ServiceConnection接口2、在Activity中调用blindService(Intent,ServiceConnection,BLIND_AUTO_CREATE);3、在ServiceConnecti

2015-06-23 08:23:51 387

原创 Gson多层嵌套Json解析

多层嵌套Json解析 采用静态内部类的形式实现多层嵌套 对于数组采用List成员实现  { "mp3list": [     {         "name": "爱我别走",         "artist": "张震岳",         "size": "2.8M",         "url": "http://127.0.0.1"

2015-06-16 08:28:42 1165

原创 Monkey Music Player知识要点总结

要点概括1、文件管理器,AlertDialog2、Service应用,Notification通知栏,防止Service被杀,点击通知栏返回后台程序,(默认会创建新的Acticity)3、Brodcast广播的应用4、Activity之间的滑动切换5、滑动侧边栏的实现,slideMenu类6、响应实体按键,返回键使程序后台7、程序被任务管理器强杀时的安全退出8、Ac

2015-06-16 08:19:07 414

空空如也

空空如也

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

TA关注的人

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