Android基础
Lerch
码畜-菜鸟
展开
-
Android线程开启与关闭
前几天改一个小问题用到了线程,涉及到线程就要考虑线程的开启和关闭。如果你想着不用的时候直接拿线程对象的Destroy方法就太天真了,相信你自己这样做都感到不敢相信。其实你的这种感觉是对的,Destroy方法的确是不能用的。也去百度了一下,见到了两种方法:第一种:用HandlerThread;HandlerThread thread = new HandlerThread("MyHand原创 2016-05-09 10:42:20 · 3907 阅读 · 0 评论 -
详解Activity
Activity是什么? 我们都知道android中有四大组件(Activity 活动,Service 服务,Content Provider 内容提供者,BroadcastReceiver 广播接收器),Activity是我们用的最多也是最基本的组件,因为应用的所有操作都与用户相关,Activity 提供窗口来和用户进行交互。 官方文档这么说: An act转载 2017-09-07 13:57:23 · 355 阅读 · 0 评论 -
Android面试-2017
从零开始-Android当我们的java基础达标之后,我们就可以在地基上添砖加瓦,打造属于自己的android大厦 下图是我对Android的一点总结 Android系统相关Android四大组件Android数据存储Android线程相关Android网络编程Android自定义ViewAndroid动画相关Android事转载 2017-09-07 18:05:59 · 390 阅读 · 0 评论 -
Android广播细解
BroadcastReceiver,作为一个广播接收者,因为android组件之间消息的传递基于intent,所以广播接收者想要接收什么类型的广播,将receiver标签下的intent-filter标签下的action标签的值置为那个广播类型即可,如[html] view plain copyreceiver android:name=".In转载 2017-09-07 17:18:37 · 274 阅读 · 0 评论 -
Android中使用sqlite
现在的主流移动设备像Android、iPhone等都使用SQLite作为复杂数据的存储引擎,在我们为移动设备开发应用程序时,也许就要使用到SQLite来存储我们大量的数据,所以我们就需要掌握移动设备上的SQLite开发技巧。对于Android平台来说,系统内置了丰富的API来供开发人员操作SQLite,我们可以轻松的完成对数据的存取。下面就向大家介绍一下SQLite常用的操作方法,为了方便转载 2017-09-07 17:27:48 · 399 阅读 · 0 评论 -
Android应用程序的Activity启动过程
无论是通过点击应用程序图标来启动Activity,还是通过Activity内部调用startActivity接口来启动新的Activity,都要借助于应用程序框架层的ActivityManagerService服务进程。在Android应用程序框架层中,ActivityManagerService是一个非常重要的接口,它不但负责启动Activity和Service,还负责管理Activity和Se转载 2017-09-08 14:30:13 · 210 阅读 · 0 评论 -
Android Service ANR
1.当在Activity 的onCreate方法中启动一个服务,服务里面是一个死循环。=》主界面无法绘出,点击手机键盘的返回按钮会报ANR错误。2.当在Activity 的onCreate方法中启动一个线程,线程里面启动一个服务,服务里面是一个死循环。=》主界面可以绘出 但会报ANR错误。3.当给按钮设置了一个点击事件,单击方法中启动了一个线程,线程内启动了一个服务,服务里面是一个转载 2017-09-18 10:26:36 · 3817 阅读 · 0 评论 -
Android下载文件合法性完整性校验
转载自:http://blog.csdn.net/l2show/article/details/48182367一.概述 因为之前项目有动态热修复的功能,在修复的过程中会从服务器上下载一个新的dex文件来替换老的dex文件,所以就牵扯到文件身份效验的问题.通常接口会下发一个MD5值,只是一个MD5值的话就只能做一个完整性效验,并不能确定文件的合法性,如果攻击者模拟接转载 2018-01-04 11:30:35 · 7831 阅读 · 0 评论 -
Android ProGuard 混淆
现在写的app 基本都是经过混淆了的,如果不混淆, 发布出去,别人一反编译 就可以直接看你的源码了ok 来说一下混淆吧:我现在用的AndroidStudio , 只需要在 build.grade 的配置文件中配置如下即可: [html] view plain copybuildTypes { debug { versionNameSuffix ".dev" }...转载 2018-03-27 15:07:00 · 203 阅读 · 0 评论 -
Android mmm 编译时cannot find symbol
今天简单的实现换settings里的第三方应用图标,但是蛋疼的是我明明已经把图片拷到目录下了,但编译Settings的时候总是出现cannot find symbol,(用的是mmm编译)。郁闷了好久,反复试了都是用样的结果。后来在开源中国里看到一个帖子,说要重新编译一下framwork里的res,果然可以,问题解决。原因是R文件是由aapt工具生成的,要确保 com.android.system原创 2016-05-10 17:22:09 · 1188 阅读 · 0 评论 -
Fresco-Facebook介绍
在Android设备上面,快速高效的显示图片是极为重要的。过去的几年里,我们在如何高效的存储图像这方面遇到了很多问题。图片太大,但是手机的内存却很小。每一个像素的R、G、B和alpha通道总共要占用4byte的空间。如果手机的屏幕是480*800,那么一张屏幕大小的图片就要占用1.5M的内存。手机的内存通常很小,特别是Android设备还要给各个应用分配内存。在某些设备上,分给Facebook Ap转载 2016-12-02 14:32:17 · 563 阅读 · 0 评论 -
Glide和Picasso
Android图片加载方式Glide和Picasso介绍与对比转载 2016-12-02 14:35:36 · 251 阅读 · 0 评论 -
Activity生命周期详解
我们来看一下这一张经典的生命周期流程图:相信不少朋友也已经看过这个流程图了,也基本了解了Activity生命周期的几个过程,我们就来说一说这几个过程。1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。2.当前Activity被其他Activity覆盖其上或被锁屏:系统会转载 2017-09-07 13:50:18 · 3057 阅读 · 0 评论 -
Android快速开发框架
本文系多方综合与转载整合,意在Android开发中能够知道和使用一些好用的第三方支持,省去自己的很多时间,下面涉及到的多为经过历史兴衰与检验的,江山代有人才出一代更比一代强,有些已经被更新更好用的所取代,但也很多地方仍可圈可点不乏参考,有些依然经典,整理出来请君一参.欢迎大家的指正,补充与交流.1、AndBase框架 项目地址: https://code.jd.com/zhao转载 2017-09-06 18:11:31 · 145 阅读 · 0 评论 -
SeekBar动态更新Thumb图片
Seekbar提供有setThumb方法,但是单纯用这个方法是无法实现更新Thumb图片的。参照SeekBar父类AbsSeekBar的源码,了解到setThumb仅仅是把AbsSeekBar的mThumb指向新的Drawable,并没有对新的Thumb的Bounds进行设定,但是在draw时,canvas要根据图像的bounds去画,这就出现了问题,输出了一下bounds的Log,发现新的Thu原创 2016-12-28 19:37:14 · 3272 阅读 · 0 评论 -
Handler机制详解
为了避免ANR,我们会通常把 耗时操作放在子线程里面去执行,因为子线程不能更新UI,所以当子线程需要更新的UI的时候就需要借助到安卓的消息机制,也就是Handler机制了。注意:在安卓的世界里面,当 子线程 在执行耗时操作的时候,不是说你的主线程就阻塞在那里等待子线程的完成——也不是调用 Thread.wait()或是Thread.sleep()。安卓采取的方法是,主线程应该为子线程提供一转载 2016-12-07 10:01:00 · 406 阅读 · 0 评论 -
Acitivity启动模式
Android有四种启动模式:standard、singleTop、singleTask、singleInstance。1、standard(拿来主义)Android默认启动模式,每次启动一个Activity都会创建一个新的实例,无论这个实例是否已经存在,然后将该实例加入到启动他的任务栈中,会走Acitivity的各个生命周期,是一种典型的多实例实现。注意:当用ApplicationC原创 2016-12-05 15:05:13 · 376 阅读 · 0 评论 -
Android项目JNI层C/C++文件中添加LOG信息
第一步:在项目的mk文件中加入:LOCAL——LDLIBS:=-llog;第二步:在要添加LOG的cpp文件中引入一个头文件和添加一个定义:#include#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "keymatch", __VA_ARGS__);第三步:就可以添加LOG啦,在添加位置:LOGD(">xxa原创 2016-12-02 16:28:17 · 757 阅读 · 0 评论 -
Fragment中add、attach、detach、remove、hide、show、replace等方法的区别与使用
使用add()加入fragment时将触发onAttach(),使用attach()不会触发onAttach()使用replace()替换后会将之前的fragment的view从viewtree中删除触发顺序:detach()->onPause()->onStop()->onDestroyView()attach()->onCreateView()->...转载 2018-08-20 15:42:05 · 5693 阅读 · 0 评论