![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 52
进阶人生
变化总是在发生:
他们只是不断地拿走你的奶酪。
遇见变化:
随时做好奶酪被拿走的准备。
追踪变化:
经常闻一闻你的奶酪,以便知道他们什么时候开始变质。
尽快适应变化:
越早放弃旧的奶酪,你就会越早享用到新的奶酪。
改变:
随着奶酪的变化而变化,并享受变化。
享受变化!
尝试冒险,去享受新奶酪的美味!
做好迅速变化的准备不断地去享受变化
记住:他们仍会不断地拿走你的奶酪。
展开
-
ShareSDK新浪微博登录提示 21338:sso package or sign error"
新浪微博登录的时候提示 “21338:sso package or sign error”分析问题应该是签名的问题,于是登录微博开放平台,然后查看Android签名。新浪微博android应用的签名工具下载地址:https://github.com/mobileresearch/weibo_android_sdk/blob/master/app_signatures.apk下载安装到手机后输入包名原创 2017-12-17 15:20:54 · 8987 阅读 · 0 评论 -
Android中的dp px dip相关概念
Android手机机型众多,分辨率和屏幕大小都很多,导致了Android生态环境的碎片化现象越来越严重。Google公司为了解决分辨率过多的问题,在Android的开发文档中定义了px、dp、sp,方便开发者适配不同分辨率的Android设备。屏幕参数:屏幕大小:指屏幕对角线的长度,通常使用“寸”来度量,例如5.0寸手机、6.0寸手机等。分辨率:分辨率是指手机屏幕的像素点个数,例如72...原创 2018-10-16 18:43:35 · 264 阅读 · 0 评论 -
Android 线程
Android沿用了Java的线程模型,一个Android应用在创建的时候会开启一个线程,我们叫它主线程或者UI线程。如果我们想要访问网络或者数据库等耗时操作时,都会开启子线程去处理,从Android3.0开始,系统要求网络访问必须在子线程中进行,否则会抛出NetworkOnMainThreadException异常。说到了线程,我们得讲讲线程的基础知识:什么是进程:进程是操作系统的基础,...原创 2019-02-02 12:52:32 · 113 阅读 · 0 评论 -
Android View的基础知识
1、本节的主要内容有View的位置参数、MotionEvent和TouchSlop对象、VelocityTracker、GestureDetector和Scroller对象。1.1 什么是ViewView是Android中所有控件的基类,View是一种界面层的控件的一种抽象,它代表了一个控件。除了View,还有ViewGroup,从名字来看,它可以被翻译为控件组,言外之意是ViewGroup内...原创 2019-02-14 18:25:20 · 363 阅读 · 0 评论 -
Android 获取assets或者raw目录的视频文件路径播放视频
新版本的开机视频要进行测试,需要先将视频放在App内测试是否能进行播放。在raw目录下的文件构造URI可以播放音频,也能播放视频。通过以下代码获取文件的位置:String uri = “android.resource://” + getPackageName() + “/” + R.raw.media;videoPlayer = (VideoView) findViewById(R.id....原创 2019-02-14 15:29:19 · 3652 阅读 · 1 评论 -
Android ProcessException: java.util.concurrent.ExecutionException: com.android.dex. DexIndexOverflow
这就是方法数越界了,解决办法:在Gradle 配置:defaultConfig { applicationId “XXX” minSdkVersion 19 &原创 2019-02-20 22:31:15 · 510 阅读 · 0 评论 -
清楚地理解Service
话题:清晰地理解 Service。1、Service 的 start 和 bind 状态有什么区别?2、同一个 Service,先 startService,然后再 bindService,如何把它停止掉?3、你有注意到 Service 的 onStartCommand 方法的返回值吗?不同返回值有什么区别?4、Service 的生命周期方法 onCreate、onStart、onBind...原创 2019-03-08 16:54:46 · 217 阅读 · 0 评论 -
Android 新建项目报错 Resolved versions for app (26.1.0) and test app (27.1.1) differ.
新建一个Android项目的时候,提示如下信息:Conflict with dependency ‘com.android.support:support-annotations’ in project ‘:app’.Resolved versions for app (26.1.0) and test app (27.1.1) differ.See https://d.android.c...原创 2019-04-12 21:32:07 · 173 阅读 · 0 评论 -
Android Studio开发Java工程
1.在AndroidStudio中想运行Java代码,是new module。2. 新建一个module,project建好后,就可以去创建Java模块,也就是现在就要在打开的项目中新建一个module::file---->new—>new Module。在弹出框中选择Java library。紧接着对module模块名字以及main类名进行设置3. 添加main方法到...原创 2019-04-12 23:08:03 · 458 阅读 · 0 评论 -
横竖屏切换时Activity的生命周期总结
横竖屏切换时Activity的生命周期总结出去面试的时候,经常会问到横竖屏切换时Activity的生命周期,现在通过代码来总结一下。示例代码如下:public class MainActivity extends AppCompatActivity {public static final String TAG=“MainActivity”;@Overrideprotected void...原创 2019-04-14 12:19:08 · 2402 阅读 · 0 评论 -
Activity的启动模式
Activity的启动模式参考自-Android开发艺术探索为什么需要启动模式?在默认情况下,当我们多次启动同一个Activity的时候,系统会创建多个实例并把它们一一放入任务栈中,当我们单击back键,会发现这些Activity会一一回退。任务栈是一种“后进先出”的栈结构,这个比较好理解,每按一下back键就会有一个Activity出栈,直到栈空为止,当栈中无任何Activity的时候,系统...原创 2019-05-25 17:36:49 · 142 阅读 · 0 评论 -
Activity的生命周期-A启动B页面再按返回键时的生命周期
关于Activity的生命周期,这里我们不再阐述,这篇文章主要讲的是从A页面跳转到B页面,然后在B页面按返回键时生命周期的变化。当创建A页面时,Activity A的生命周期为:在A页面点击按钮跳转到B页面,这时候的生命周期为:这时候我们在Activity B按系统返回键:生命周期为:...原创 2019-05-22 17:43:51 · 1607 阅读 · 0 评论 -
ERROR: All flavors must now belong to a named flavor dimension.
AndroidStudio升级到3.4.1之后,配置多版本打包运行的时候会提示这个错误(ERROR: All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html)解决办...原创 2019-05-28 14:22:02 · 223 阅读 · 0 评论 -
Cause: android-apt plugin is incompatible with the Android Gradle plugin.
Android 升级到3.4.1后,原来的项目无法通过编译了,让我们看看出现的问题:Cause: android-apt plugin is incompatible with the Android Gradle plugin.Please use ‘annotationProcessor’ configuration instead.该问题发生在module级的build.gradle文...原创 2019-05-28 14:39:28 · 1127 阅读 · 1 评论 -
Android Studio 编写运行Java代码 控制台中文输出乱码
在使用Android Studio开发时,创建了Java工程,要在控制台输出中文的时候,会输出乱码的问题。Test类直接运行main()方法,控制台输入截图如下,解决方法是:在该Java工程目录下的build.gradle添加如下代码,然后重新运行,tasks.withType(JavaCompile) { options.encoding = "UTF-8"}控制台...原创 2018-09-12 22:03:16 · 534 阅读 · 0 评论 -
Handler的工作原理,为什么在子线程中执行new Handler()会抛出异常?
Handler的工作主要包含消息的发送和接受过程。发送过程通过post的一系列方法和send的一系列方法来实现,post的一系列方法最终是通过send的一系列方法来实现的。发送一条消息的典型过程如下: public final boolean sendMessage(Message msg){ return sendMessageDelayed(msg, 0);}p...原创 2018-08-20 18:16:16 · 2165 阅读 · 0 评论 -
Service小结
1、Service的start和bind状态有什么区别?区别:(1)生命周期不同 startService:onCreate->onStartCommand->onStart 再次start:onStartCommand->onStart stop:onDestory。 bindService:onCreate->onBind 再次bind:不会再执行onBind unbi...原创 2018-02-27 18:43:10 · 178 阅读 · 0 评论 -
Error:(1, 1) A problem occurred evaluating root project 'app'. > Plugin with id 'com.android.applica
在项目里新建一个Module,出现了如下错误:Error:(1, 1) A problem occurred evaluating root project 'app'.> Plugin with id 'com.android.application' not found。经过多次上网查找一时半会没有找到解决的办法,先删除新建的library,后来查看gradle的时候发现setting....原创 2018-03-16 18:40:19 · 20833 阅读 · 0 评论 -
Minimum supported Gradle version is 3.3. Current version is 2.14.1.Please fix the project's Gradle s
从github上下载了一个项目学习下,在导入Android Studio的时候出现了如下的错误:Minimum supported Gradle version is 3.3. Current version is 2.14.1.Please fix the project's Gradle settings.href="fixGradleVersionInWrapper">Fix Grad...原创 2017-12-17 15:17:00 · 911 阅读 · 0 评论 -
Could not resolve com.android.support:appcompat-v7:26.1.0.
新建一个项目的时候报错,如下:Error:Could not resolve all files for configuration ':app:debugCompileClasspath'.Could not resolve com.android.support:appcompat-v7:26.1.0. Required by:project :app No cached version of...原创 2018-03-13 17:40:04 · 5545 阅读 · 0 评论 -
Android底部返回键等虚拟键盘适配问题
问题:华为手机遮挡了文章底部的评论、分享、点赞等。 需求:需要安卓能自适应底部虚拟按键,用户隐藏虚拟按键时应用要占满整个屏幕,当用户启用虚拟键时,应用能往上收缩,等于是被底部虚拟按键顶上来。解决方案:监听某个视图的变化,当可以看见的高度发生变化时,就对这个视图重新布局,保证视图不会被遮挡,也不会浪费屏幕空间。这一点尤其可用在像华为手机等可以隐藏和显示虚拟键盘上导致屏幕变化的手机上。添加工具类pub...原创 2018-05-09 17:04:54 · 3235 阅读 · 0 评论 -
Android 6.0申请动态权限
1、动态权限从Android6.0(API23)开始,对系统权限做了非常大的改变,6.0之前用户安装App的时候,只是把App需要的使用的权限统一列出来让用户看一下,App安装后都可以访问这些权限。从6.0开始,一些敏感权限需要在使用的时候动态申请,同时用户可以选择拒绝授权访问这些权利,已授予过的权限,用户也可以去设置界面去关闭授权。对于用户来说提高了安全性,可以防止一些应用恶意访问用户数据,但对...原创 2018-07-10 19:01:26 · 231 阅读 · 0 评论 -
单例模式
单例模式的介绍单例模式是应用最广的模式之一,也是面试的时候经常问的。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个全局对象,这样有利于我们协调系统整体的行为。如在一个应用中,应该只有一个ImageLoader实例,这个ImageLoader中又含有线程池、缓存系统、网络请求等,很消耗资源,因此,没有理由让它构造多个实例。这种不能自由构造对象的情况,就是单例...原创 2018-08-04 23:18:59 · 92 阅读 · 0 评论 -
Android 中 px、dp、dip、sp总结
平时做Android开发的时候会经常遇到dp、dip、dpi、px、sp这些单位,今天就跟大家一起学习下这些单位。屏幕尺寸是指屏幕对角线长度,单位是英寸,1英寸=2.54厘米。屏幕分辨率:在橫纵向上的像素点数。单位:px即1px=1个像素点。一般以纵向像素*横向像素表示,如1920*1080Dpi:屏幕像素密度,指每英寸上的像素点数,dot per inch的缩写,与屏幕尺寸和屏幕...原创 2018-08-06 22:19:34 · 172 阅读 · 0 评论 -
TCP的三次握手和四次挥手
1、三次握手(1)三次握手的详述首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。 最初两端的TCP进程都处于CLOSED关闭状态,A主动打开连接,而B被动打开连接。(A、B关闭状态CLOSED——B收听状态LISTEN——A同步已发...原创 2018-08-14 18:14:06 · 120 阅读 · 0 评论 -
线程知识小结
Android沿用了Java的线程模型,一个Android应用在创建的时候会开启一个线程,我们叫它主线程或者UI线程。如果我们想要访问网络或者数据库等耗时操作时,都会开启子线程去处理,从Android3.0开始,系统要求网络访问必须在子线程中进行,否则会抛出NetworkOnMainThreadException异常。说到了线程,我们得讲讲线程的基础知识: 什么是进程: 进程是操作系统的基础,...原创 2018-08-03 00:26:48 · 119 阅读 · 0 评论 -
Kotlin Android环境搭建
Kotlin Android 环境搭建安装 Kotlin 插件Android Studio 从 3.0(preview)版本开始将内置安装 Kotlin 插件。打开 File->Settings ( Mac 为 Preferences) 面板,在左侧找到 Plugins 选项,搜索框输入 "Kotlin" 查找,点击 Install JetBrains plugins,会看到An...原创 2018-08-07 17:27:53 · 515 阅读 · 0 评论 -
TCP/IP网络分层
网络分层有不同的模型,有的模型分七层,有的模型分五层,今天学习一下分五层的。从上到下依次是:应用层、传输层、网络层、数据链路层、物理层。接下来我们从下而上来分别来了解这些分层。物理层该层负责比特流在节点间的传输,即负责物理传输。该层的协议即与链路有关,也与传输介质有关。其通俗来讲就是把计算机连接起来的物理手段。数据链路层该层控制网络层与物理层之间的通信,其主要功...原创 2018-08-15 09:31:43 · 940 阅读 · 0 评论 -
Android 软引用和弱引用
如果一个对象只具有软引用,那么如果内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。 比如在图片加载框架中,通过弱引...原创 2018-08-15 17:37:29 · 135 阅读 · 0 评论 -
java sleep和wait的区别
1、sleep()是线程类(Thread)的方法,调用会暂停此线程指定的时间,但监控依然保持,不会释放对象锁,到时间自动恢复;wait()是Object的方法,调用会放弃对象锁,进入等待队列,待调用notify()/notifyAll()唤醒指定的线程或者所有线程,才会进入锁池,不再次获得对象锁才会进入运行状态;2、每个对象都有一个锁来控制同步访问,Synchronized关键字可以和对象的锁交...原创 2019-06-07 13:36:28 · 171 阅读 · 0 评论