android
文章平均质量分 98
一行两行
他强由他强,清风拂山岗;他横由他横,明月照大江;他自狠来他自恶,我自一口真气足。
展开
-
聊聊Java的多线程.(未完待续)
既然我们今天要说说多线程,那么我们不得不介绍介绍Java中线程的概念:线程介绍概念:线程是Java中重要的组成部分之一:"程序"(Program)是保存在存储设备上的文件; "进程"(Process)是正在计算机中执行的程序; "线程"(Thread)是进程中某个单一顺序的控制流或者一条执行路径. 在主流操作系统中,如 Mac,Linux,WIndows中线程有时...原创 2021-01-14 23:57:07 · 145 阅读 · 0 评论 -
Android填坑记录
1.接入firebase问题:2020-01-02 16:46:53.878 2711-2853/? E/FirebaseInstanceId: Google Play services missing or without correct permission.2020-01-02 16:46:54.311 2711-2853/? E/FirebaseInstanceId: Google...原创 2020-01-02 17:04:59 · 15656 阅读 · 0 评论 -
Android插件化的一点点探索
一、什么是插件化 谈到插件化,很多人会想到热修复,热更新,组件化这些名词。最近有网友在热补丁介绍及Andfix的使用 看了这篇文章给我发私信问,想把Andfix集成在自身项目里面。因为阿里出品,而且比较火。其实我当时也有过这个考虑,后面真正深入后,发现其实还有很多坑,而且github上面也很久没有代码更新了。综合各种原因,后面放弃了。(这里并不是诋毁Andfix,因为我自己也投入很多精力去研究...原创 2018-04-18 15:29:49 · 699 阅读 · 0 评论 -
Configuration分析文档
AndroidConfiguration更新流程分析1.当用户发生语言切换事件,就是Configuration中locale值发生改变。这个函数主要获取AMS代理对象,然后从AMS中获取Configuration对象configpublic static void updateLocale(Locale locale) { IActivityManager am = Acti原创 2017-01-23 21:41:03 · 2242 阅读 · 2 评论 -
Configuration(Android6.0)
说到Configuration,大家最熟悉的想必是Android:configChanges=[“mcc”,“mnc”, “locale”,”touchscreen”, “keyboard”,“keyboardHidden”,”navigation”,”screenLayout”, “fontScale”,“uiMode”,”orientation”, “screenSize”, “small转载 2017-01-20 19:14:05 · 5306 阅读 · 2 评论 -
ConfigurationChanged流程梳理(屏幕旋转,语言,字体切换)
前段时间做了关于系统字体切换的功能,其中涉及到较多ConfigurationChanged的流程。屏幕旋转、mcc、系统语言切换等均是通过该流程来实现的。网上少有这方面的描述,故将该部分总结提炼出来做个小结。以下以屏幕旋转为例。关于屏幕旋转对于Activity的生命周期的影响也在以下可以体现,如何处理屏幕旋转对Act的影响也有启示作用。ConfigurationChange Flo转载 2017-01-18 16:28:13 · 2103 阅读 · 0 评论 -
Android中消息处理机制研究
消息机制概述本文亦在分析Android中Handler机制源码中Java层和C++层之间的关系,Android应用程序的每一个线程在启动时,都可以首先在内部创建一个消息队列,然后再进入一个无限循环中,不断检查它的消息队列是否有新的消息需要处理,如果有新的消息需要处理,那么线程就会将它从消息队列中取出来,并且对它进行处理;否则线程就会进入睡眠等待状态,直到有新的消息需要处理为止,这样就可以通过消息来驱动Android应用程序的执行。原创 2017-01-02 13:46:06 · 2006 阅读 · 0 评论 -
探索Android中的Configuration
我们今天来说的Configuration是什么呢?它就是在Android中获取系统信息的一个东西,一个APP通过Configuration可以获取一些系统信息,比如语言,键盘,横竖屏。。等等当我们每次将系统设置修改后应用都要重启以重新加载配置文件,那么我们怎么办才能防止这种情况呢?我们首先可以修改Manifest.xml文件:<manifest xmlns:android="http:/原创 2017-01-17 20:09:58 · 478 阅读 · 1 评论 -
浅谈Android中Activity的生命周期和加载模式
我们在面试Android工程师的过程中经常会被问到这么一些问题,例如:Activity的生命周期,Activity的加载模式,Android中的四大组件,以及Object类的几大方法这么一些基础的问题,那么我们今天就就Activity的声明周期来探讨探讨!!!借调书上的一句话:当Activity处于Android应用中运行时,它的活动状态由Android以Activity栈的形式管理.当前...原创 2015-11-17 17:32:26 · 2783 阅读 · 3 评论 -
Android中图片占用内存的计算
在Android开发中,我现在发现很多人还不会对图片占用内存进行很好的计算。 Android中一张图片(BitMap)占用的内存主要和以下几个因数有关:图片长度,图片宽度,单位像素占用的字节数。一张图片(BitMap)占用的内存=图片长度*图片宽度*单位像素占用的字节数注:图片长度和图片宽度的单位是像素。图片(BitMap)占用的内存应该和屏幕密度(Density)无关,虽然转载 2016-09-02 09:58:52 · 488 阅读 · 0 评论 -
Android系统五层架构
Android 是一种基于 Linux 的开放源代码软件栈,为广泛的设备和机型而创建。下图所示为 Android 平台的主要组件。 Android 软件栈Linux 内核android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 linux 内核来执行底层功能,例如线程和低层内存管理。使用 Linux 内核可让 A转载 2017-07-18 19:24:25 · 875 阅读 · 0 评论 -
ScrollView嵌套Viewpager嵌套瀑布流Recyclerview
最近在工作中遇到这样一个情景,ScrollView嵌套Viewpager嵌套瀑布流Recyclerview,让我踩到一个大坑,首先是scrollview和viewpager的嵌套问题继而又遇到viewpager嵌套瀑布流recyclerview的问题,让我绞尽脑汁。最后想出一个办法:1.首先重写Scrollview解决滑动冲突问题。2.因为viewpager被嵌套在scrollview原创 2017-08-24 11:28:42 · 1132 阅读 · 0 评论 -
RXJava详解
前言我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 。而最近这几个月,我也发现国内越来越多的人开始提及 RxJava 。有人说『RxJava 真是太好用了』,有人说『RxJava 真是太难用了』,另外更多的人表示:我真的百度了也谷歌了,但我还是想问: R转载 2017-09-15 20:14:12 · 550 阅读 · 0 评论 -
Glide用法总结--缓存与下载方法
本文转自laizhixue博主,原文排版上有些问题,我在此加以修改。Glide加载图片虽说非常智能,它会自动判断该图片是否已经有缓存了,如果有的话就直接从缓存中读取,没有的话再从网络去下载。但是如果我希望提前对图片进行一个预加载,等真正需要加载图片的时候就直接从缓存中读取,不想再等待慢长的网络加载时间了,这该怎么办呢?preload()方法有两个方法重载,一个不带参数,表示将会加载图片的原...转载 2019-03-15 11:37:36 · 1405 阅读 · 0 评论 -
Glide硬盘缓存逻辑
当Glide从两级缓存(LruCache及activeResources弱引用缓存)中都获取不到图片时,那么此时就会开启线程尝试从硬盘中读缓存。以下代码引用出自DecodeJob.java及EngineRunnable.java。从硬盘中读取时有缓存读取缓存,没有缓存直接解码原始图片数据。 private Resource<?> decode() throws Exce...原创 2019-03-15 18:01:14 · 982 阅读 · 0 评论 -
华为p20,弹dialog点击返回键弹框不消失 bug。
啥也不说了上代码public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentV...原创 2019-07-23 21:40:22 · 353 阅读 · 0 评论 -
Lottie使用介绍:(二版未完再续)
在工作中产品提出了这么一个一个动画需求,如下图:其实这个需求本来直接用属性动画就解决了,但是为了学学Lottie就强行用了一把。(然后最后的结果还是用了属性动画,因为Lottie的交互性不强,或者说我不太会用;感觉Lottie动画主要用来展示性的动画,交互功能比较多的动画个人还是喜欢用属性动画);1.导入lottie库://lottie框架compile'com.airbnb....原创 2019-07-17 20:59:45 · 1418 阅读 · 0 评论 -
获取android软键盘高度
获取android软键盘高度,虽然是在网上找的方法,不过已亲自测试过,这方法转载太多了,不知道谁是原著了,原作者莫怪。感谢原作者。MainActivity.javapublic class MainActivity extends Activity { private TextView textView; @Override protected void ...转载 2019-10-10 20:27:42 · 319 阅读 · 0 评论 -
Android四大组件之Service
今天我们来说Service。正如书中所说Service组件也是可执行程序,他有自己的声明周期。创建,配置Service与创建配置Activity的过程基本相似。这里我们总结一下:1). 被启动的服务的生命周期:如果一个Service被某个Activity 调用 Context.startService 方法启动,那么不管是否有Activity使用bindService绑定或unbind...原创 2016-03-01 20:47:11 · 474 阅读 · 0 评论 -
Android四大组件之BroadcastReceiver.
今天我们来说BroadcastReceiver.这个组件本质上就是一种全局的监听器,用于监听系统全局的广播消息。所以他可以实现系统中不同组件之间的通信。他用于接收程序(包括用户开发的程序和系统内建的程序)所发出的Broadcast Intent,同样程序启动Broadcast也需要两步。开发步骤: 1:创建需要启动的BroadcastReceiver的Inte...原创 2016-03-11 00:33:43 · 415 阅读 · 1 评论 -
Android短信验证实现步骤
1.先在www.mob.com网创建项目,进入后台会得到一个appkey和appsecrete;2.下载短信验证sdk并解压.3在eclipse中新建项目,并导入解压好的文件夹中的SMSSDK项目.4.右键点击导入的SMSSDK项目,进入Properties->android;在图片中标红位置打勾,如图示.5.右键点击新建的短信验证项目,进入Properties->an原创 2015-10-29 19:18:55 · 2339 阅读 · 1 评论 -
MenuItem中添加item的menu.add();方法中的四个参数解析。
转载于:http://blog.csdn.net/xiangyong58/article/details/41345327在menu.add()有四个参数,开始不懂其理。看过后记于此,以备查阅。任何一款软件都少不了对“菜单”的使用。在Android下,每一个activity都捆绑了一个Menu,要想定义和使用菜单,都必须在Activity下进行操作,复写onCreate转载 2015-10-23 11:34:40 · 4074 阅读 · 0 评论 -
Android四大基本组件介绍与生命周期
Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。一:了解四大基本组件Activity :应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。在Intent 的描述结...原创 2015-10-22 21:17:21 · 280 阅读 · 0 评论 -
Android ActionBar的基本用法
本文转载于http://blog.csdn.net/bigconvience/article/details/288862411、ActionBar的简介ActionBar位于Activity的顶部,可用来显示activity的标题、Icon、Actions和一些用于交互的View。它也可被用于应用的导航。ActionBar 是在Android 3.0(API 11)中加入到SK中转载 2015-10-22 21:29:52 · 486 阅读 · 0 评论 -
handler的几种用法
package com.example.handler_test;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.View.OnCli原创 2015-05-24 20:40:53 · 909 阅读 · 0 评论 -
android之cannot convert from Fragment1 to Fragment
在写一个音乐播放器的时候,用到了fragment,结果在需要返回Fragment的方法里面,无法将Fragment1(Fragment的子类)强制转换成Fragment,很是纳闷,我是参照一个开源代码来做的,源码里面很正常,我这里却报错,后来才发现,是对包的导入出现了差错,在Fragment1中导入的是android.app.Fragment而在出错的那个类里面是用androi转载 2015-06-03 21:00:50 · 370 阅读 · 0 评论 -
Android中UI线程Looper,Handler的关系
Android中的Activity、service和Broadcast都是由UI线程负责处理的。UI线程默认已经含有消息循环和消息队列。而其他由开发者自主生成的工作线程默认是没有消息队列和消息循环的。如果想生成,则可以用Looper.prepare();Handler的作用是把消息加入特定的消息队列中(Looper的messageQuene),并分发和处理该消息队列中的消息转载 2015-05-31 21:20:05 · 920 阅读 · 0 评论 -
更新UI的四种方式
布局文件中只有一个TextView所以在此处不再给出.下面给出java代码:package com.example.handler_test2;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.widget.TextView;public cl原创 2015-05-31 20:27:41 · 414 阅读 · 0 评论 -
Eclipse中10个最有用的快捷键组合
一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合。通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升。 1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了。这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如applic*.xml。美中不足的是这组转载 2015-05-29 10:57:30 · 9619 阅读 · 0 评论 -
Android四大组件之ConentProvider.
Android中的四大组件有一个叫做ContentProvider的东西,这货是用来干什么的呢?下面听小弟给你细细道来:基本介绍: Android中有四大组件分别是Activity,ContentProvider,Service,BroadcastReceiver,它们都需要在AndroidManifest.xml文件中进行配置. Conte...原创 2015-12-15 22:28:36 · 725 阅读 · 0 评论 -
关于Intent传递数据的几种方法
(1)首先是Activity的简单跳转: Activity的切换一般是通过Intent来实现的,Intent是一个Activity到达另一个Activity的引路者,它描述了起点(当前Activity)和终点(目标Activity)。一个简单Intent实现如下: Intent intent = new Intent();转载 2015-07-23 18:18:47 · 1055 阅读 · 0 评论 -
GestureDetector类及其用法
用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing等等。一般情况下,我们知道View类有个View.OnTouchListener内部接口,通过重写他的onTouch(View v, MotionEvent event)方法,我们可以处理一些touch事件,但是这个方法太过简单,如果需要处理一些复杂的手势,用这个接口就会很麻烦(因为我们要自己根据用户触摸的轨转载 2015-06-10 11:21:06 · 357 阅读 · 0 评论 -
Activity四种状态
首先你要知道Activity的四种状态:Active/Runing 一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。 Paused 当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。原创 2015-06-07 16:42:08 · 529 阅读 · 0 评论 -
IntentFilter
当Intent在组件间传递时,组件如果想告知Android系统自己能够响应和处理哪些Intent,那么就需要用到IntentFilter对象。 顾名思义,IntentFilter对象负责过滤掉组件无法响应和处理的Intent,只将自己关心的Intent接收进来进行处理。 IntentFilter实行“白名单”管理,即只列出组件乐意接受的Intent,但IntentFilter只会过滤转载 2015-05-26 10:45:29 · 342 阅读 · 0 评论 -
view.setTag与view.getTag的作用
@Override public View getView(int arg0, View arg1, ViewGroup arg2) { // TODO Auto-generated method stub ViewHolder viewHolder = null; if (arg1 ==null) { viewHolder = new ViewHolder(); arg原创 2015-06-27 16:39:38 · 899 阅读 · 0 评论 -
Adapter是为了什么?
Adapter定义:将一个类的接口变换成客户端所期待的一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作;(觉得这句话完整的解释了adapter的用处,来自百度百科;)原创 2015-06-27 21:49:36 · 442 阅读 · 0 评论 -
viewpager详解
Android ViewPager使用详解(转) (2013-04-17 19:59:36)转载▼ 这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api。而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等。那如何使用它转载 2015-04-26 16:54:30 · 552 阅读 · 0 评论 -
设置viewpager不能滑动
最近做项目要求某种情况下ViewPager不能滑动,在网上找了一圈。有说重写Ontouch的,各种。都试了试,基本都不可用。 自己看ViewPager源码,知道VIewPager移动全部都调用了scrollTo方法,这个是View的方法,那么我们只需要重写这个方法就可以禁止ViewPager滑动 Java代码public class CustomViewPa转载 2015-06-03 21:57:36 · 2105 阅读 · 0 评论 -
使用AsyncTask实现网络数据的异步访问
在调用时使用: new NewsAsyncTask().execute(URL); //实现网络的异步访问//1.string请求网址2.记录中间过程3.返回的json被解析得到的List<>;class NewsAsyncTask extends AsyncTask >{ //处理后台执行的任务,在后台线程执行 @Override protected List doInBa原创 2015-06-27 21:16:41 · 756 阅读 · 0 评论 -
我们来谈谈Android回调.
说起Android的回调相信大家都不陌生,在你写的第一个Android程序中就运用到了回调机制例如onCreate()方法.其实在平常编写Android程序时也会遇到很多的回调方法例如:onActivityResult(),OnClickListener(),等...一个回调机制就像:"你妈妈叫你去买盐,然后你去买盐,买完盐回来,你告诉你妈妈你把盐买回来了让你妈开始炒菜,",在这个事件之中"你原创 2015-11-12 17:39:19 · 626 阅读 · 0 评论