android
文章平均质量分 69
fesng
CSDN年度博客之星和博客专家,毕业长期在一线互联网专注于Android开发以及Android漏洞挖掘研究。
展开
-
Android代码如何重构
讲一下Android代码重构的思路1.新增提取函数<1>复杂逻辑拆成函数<2>大函数拆成小函数2.父类和子类之间转移函数<1> 把子类的x相同逻辑,提取成父类函数<2> 把父类的非通用逻辑,提取成用到的个别子类中的函数3.类之间转移函数如果类之间重复调用耦合,可以考虑把耦合的逻辑全部提取到一个类,符合单一原则4.复杂类拆分成几个类...原创 2020-04-23 02:08:29 · 1066 阅读 · 1 评论 -
Android 10适配总结
Android 10 聚焦移动创新、安全隐私和数字健康三大主题。具体适配点如下:1.原先支持向下兼容的V4和V7 support包,替换为Android X包2.存储权限适配,变成分区存储:应用内文件,应用外特定目录文件和公共文件(媒体文件和非媒体文件)3.imei不能再获取,变为和厂商合作的OAID等替代方案4.API版本大于28时,默认http请求限制,通过在Admenifest文件...原创 2020-04-15 12:23:25 · 1359 阅读 · 1 评论 -
查看app栈顶Activity名称
两种方式对于如下的优酷页面 1.通过adb 命令查看1.首先连接adb shell 2.使用命令: dumpsys activity | grep mFocusedActivity 效果如下图: 2.通过安装app下载app链接: https://github.com/fashare2015/ActivityTracker/blob/master/apk/app-debug.apk?ra原创 2017-01-11 16:41:13 · 2995 阅读 · 1 评论 -
Android的Spinner控件用法解析
微调框微调框提供一种方法,让用户可以从值集中快速选择一个值。默认状态下,微调框显示其当前所选的值。 触摸微调框可显示下拉菜单,其中列有所有其他可用值,用户可从中选择一个新值。您可以使用 Spinner 对象向您的布局中添加一个微调框。通常应在 XML 布局中使用 元素来执行此操作。 例如:<Spinner android:id="@+id/planets_spinner" andr原创 2016-11-29 15:55:12 · 1506 阅读 · 1 评论 -
Android输入控件详解
输入控件输入控件是您的应用用户界面中的交互式组件。Android 提供了多种可在 UI 中使用的控件,如按钮、文本字段、定位栏、复选框、缩放按钮、切换按钮等。向 UI 中添加输入控件与向 XML 布局中添加 XML 元素一样简单。例如,以下是一个包含文本字段和按钮的布局:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:androi原创 2016-11-29 10:21:00 · 3527 阅读 · 0 评论 -
Android线性布局
线性布局LinearLayout 是一个视图组,用于使所有子视图在单个方向(垂直或水平)保持对齐。 您可以使用 android:orientation 属性指定布局方向。LinearLayout 的所有子视图依次堆叠,因此无论子视图有多宽,垂直列表每行均只有一个子视图,水平列表将只有一行高(最高子视图的高度加上内边距)。 LinearLayout 遵守子视图之间的“边距”以及每个子视图的“重力”(右原创 2016-11-28 22:52:36 · 962 阅读 · 0 评论 -
Android布局概述
布局布局定义用户界面的视觉结构,如Activity或应用小部件的 UI。您可以通过两种方式声明布局:在 XML 中声明 UI 元素。Android 提供了对应于 View 类及其子类的简明 XML 词汇,如用于小部件和布局的词汇; 运行时实例化布局元素。您的应用可以通过编程创建 View 对象和 ViewGroup 对象(并操纵其属性)。 Android 框架让您可以灵活地使用以下一种或两种方法原创 2016-11-28 22:37:23 · 1389 阅读 · 3 评论 -
Android的Ui层次
UI 概览Android 应用中的所有用户界面元素都是使用 View 和 ViewGroup 对象构建而成。View 对象用于在屏幕上绘制可供用户交互的内容。ViewGroup 对象用于储存其他 View(和 ViewGroup)对象,以便定义界面的布局。Android 提供了一系列 View 和 ViewGroup 子类,可为您提供常用输入控件(如按钮和文本字段)和各种布局模式(如线性布局或相对布原创 2016-11-28 22:13:10 · 2399 阅读 · 1 评论 -
Android基础知识点-Manifest清单文件
每个应用的根目录中都必须包含一个 AndroidManifest.xml 文件(且文件名精确无误)。 清单文件向 Android 系统提供应用的必要信息,系统必须具有这些信息方可运行应用的任何代码。清单文件还可执行以下操作:为应用的 Java 软件包命名。软件包名称充当应用的唯一标识符。 描述应用的各个组件,包括构成应用的 Activity、服务、广播接收器和内容提供程序。它还为实现每个组件的类命原创 2016-11-28 21:49:08 · 2696 阅读 · 0 评论 -
Android程序员必须掌握的知识点-多进程和多线程
当某个应用组件启动且该应用没有运行其他任何组件时,Android 系统会使用单个执行线程为应用启动新的 Linux 进程。默认情况下,同一应用的所有组件在相同的进程和线程(称为“主”线程)中运行。 如果某个应用组件启动且该应用已存在进程(因为存在该应用的其他组件),则该组件会在此进程内启动并使用相同的执行线程。 但是,您可以安排应用中的其他组件在单独的进程中运行,并为任何进程创建额外的线程。本文介绍原创 2016-11-27 19:31:37 · 4603 阅读 · 0 评论 -
ubuntu垃圾清理命令
ubuntu的空间莫名不够用了通过系统自带的工具磁盘使用分析器,发现var文件下面的log100多个g,这个日志文件是可以删除的,然后tmp文件也是可以删除的。1.sudo rm -rf /tmp/*2.sudo rm -rf /var/log/*大功告成!!!我的微信二维码如下,欢迎交流讨论欢迎关注《IT面试题汇总》微信订阅号。每天推送经典面试题和面试心得技巧微信订阅号二维码如下:原创 2016-11-30 21:39:17 · 2627 阅读 · 2 评论 -
Android输入事件详解
输入事件在 Android 系统中,从用户与应用的交互中截获事件的方法不止一种。如考虑截获用户界面内的事件,则可从用户与之交互的特定视图对象中捕获事件。 为此,View 类提供了多种方法。在您将用于构建布局的各种 View 类中,您可能会注意到几种看起来适用于 UI 事件的公共回调方法。 当该对象上发生相应的操作时,Android 框架会调用这些方法。 例如,在触摸一个视图对象(例如“按钮”)时,对原创 2016-12-01 21:51:38 · 1055 阅读 · 0 评论 -
Android对话框Dialog深度剖析
对话框对话框是提示用户作出决定或输入额外信息的小窗口。 对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件。对话框设计Dialog 类是对话框的基类,但您应该避免直接实例化 Dialog,而是使用下列子类之一:AlertDialog此对话框可显示标题、最多三个按钮、可选择项列表或自定义布局。 DatePickerDialog 或 TimePickerDialog 此对话框带有允许原创 2016-12-01 22:52:11 · 2793 阅读 · 0 评论 -
Android横向ListView
在日常开发中经常会发现横向的ListView。下面讨论实现方案。 1.动态的添加布局。RelativeLayout view = (RelativeLayout) LayoutInflater.from(this) .inflate(R.layout.demo, null);ListView.addView(view);2.通过继承AdapterView(ListAdapte原创 2017-01-06 20:15:05 · 10356 阅读 · 1 评论 -
安卓通知控件SnackBar解析
在浏览Newlink代码时候发现,发现所有的通知都是采用Toast和Dialog的形式,google后面推除了Snackbar这个控件,和以上两个控件互补,我发现可以尝试在newlink里面针对一些简单的通知逻辑,比如删除数据提醒等,采用SnackBar。 安卓常用的控件包括Toast和Dilalog。先介绍一下他们。DilalogDialog的作用是给用户一个提示信息,并让用户根据提示做出判断。原创 2016-12-30 14:04:29 · 3020 阅读 · 0 评论 -
Android学习资源-retrofit,eventBus,butterknife,fragment
1.常用技术学习链接newLink用的技术主要以下这些1.retrofit 这个是NewLink网络请求的主要技术 学习博客链接如下: http://blog.csdn.net/lmj623565791/article/details/51304204 2.eventeventbus 这是一个事件集中控制的技术 学习博客链接如下: http://blog.csdn.net/harvic原创 2016-12-30 09:55:27 · 1830 阅读 · 0 评论 -
如何获得Android手机的软件安装列表
Android的PackageManager类用于检索目前安装在设备上的应用软件包的信息。你可以通过调用getpackagemanager()得到PackageManager类的一个实例。对查询和操作安装包和相关的权限提供了方法,在下面这个Android的例子中,我们得到了在Android安装的应用程序列表。 PackageManager packageManager = getPackageMa原创 2016-12-14 19:18:57 · 1867 阅读 · 0 评论 -
Android适配难题全面总结
支持多种屏幕Android 可在各种具有不同屏幕尺寸和密度的设备上运行。对于 应用,Android 系统在不同设备中提供一致的开发环境, 可以处理大多数工作,将每个应用的用户界面调整为适应其显示的 屏幕。同时,系统提供 API,可用于控制 应用适用于特定屏幕尺寸和密度的 UI,以针对 不同屏幕配置优化 UI 设计。例如,您可能想要不同于手机 UI 的 平板电脑 UI。虽然系统为使您的应用适用于不同的原创 2016-12-05 15:43:03 · 6067 阅读 · 0 评论 -
Android样式(style)和主题(theme)
样式和主题样式是指为 View 或窗口指定外观和格式的属性集合。样式可以指定高度、填充、字体颜色、字号、背景色等许多属性。 样式是在与指定布局的 XML 不同的 XML 资源中进行定义。Android 中的样式与网页设计中层叠样式表的原理类似 — 您可以通过它将设计与内容分离。例如,通过使用样式,您可以将以下布局 XML:<TextView android:layout_width="fil原创 2016-12-04 21:33:23 · 1946 阅读 · 0 评论 -
Android 多窗口详解
多窗口支持Android N 添加了对同时显示多个应用窗口的支持。 在手持设备上,两个应用可以在“分屏”模式中左右并排或上下并排显示。 在电视设备上,应用可以使用“画中画”模式,在用户与另一个应用交互的同时继续播放视频。如果您使用 N Preview SDK 构建应用,则可以配置应用处理多窗口显示的方法。 例如,您可以指定 Activity 的最小允许尺寸。 您还可以禁用应用的多窗口显示,确保系统仅原创 2016-12-04 20:30:40 · 2538 阅读 · 0 评论 -
Android通知Notification全面剖析
通知通知是您可以在应用的常规 UI 外部向用户显示的消息。当您告知系统发出通知时,它将先以图标的形式显示在通知区域中。用户可以打开抽屉式通知栏查看通知的详细信息。 通知区域和抽屉式通知栏均是由系统控制的区域,用户可以随时查看。 图 1. 通知区域中的通知。 图 2. 抽屉式通知栏中的通知。注:除非特别注明,否则本指南均引用版本 4 支持库中的 NotificationCompat.Builder原创 2016-12-02 10:55:33 · 4180 阅读 · 1 评论 -
Android的AIDL机制
Android 接口定义语言 (AIDL)AIDL(Android 接口定义语言)与您可能使用过的其他 IDL 类似。 您可以利用它定义客户端与服务使用进程间通信 (IPC) 进行相互通信时都认可的编程接口。 在 Android 上,一个进程通常无法访问另一个进程的内存。 尽管如此,进程需要将其对象分解成操作系统能够识别的原语,并将对象编组成跨越边界的对象。 编写执行这一编组操作的代码是一项繁琐的工原创 2016-11-23 22:26:25 · 3866 阅读 · 0 评论 -
Android的Intent机制详解
Intent 是一个消息传递对象,您可以使用它从其他应用组件请求操作。尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个:启动 Activity:Activity 表示应用中的一个屏幕。通过将 Intent 传递给 startActivity(),您可以启动新的 Activity 实例。Intent 描述了要启动的 Activity,并携带了任何必要的数据。 如果原创 2016-11-23 20:15:04 · 5283 阅读 · 1 评论 -
Android新特性Instant Run详解
关于 Instant RunAndroid Studio 2.0 中引入的 Instant Run 是 Run 和 Debug 命令的行为,可以大幅缩短应用更新的时间。尽管首次构建可能需要花费较长的时间,Instant Run 在向应用推送后续更新时则无需构建新的 APK,因此,这样可以更快地看到更改。仅在您部署调试构建变体、使用 Android Plugin for Gradle 版本 2.0原创 2016-11-23 17:28:20 · 3270 阅读 · 0 评论 -
Android新建工程步骤(AndroidStudio)
1.在 Android Studio 中,创建新项目:如果您未打开项目,请在 Welcome to Android Studio 窗口中,点击 Start a new Android Studio project。 如果您已打开项目,请选择 File > New Project。2.在 New Project 屏幕中,输入以下值:Application Name:“My First App” C原创 2016-11-14 14:05:26 · 2844 阅读 · 2 评论 -
Android的log日志知识点剖析
log类的继承结构Logpublic final class Log extends Object java.lang.Object ↳ android.util.Loglog日志的常用方法分为6个级别 ,低级别包括高级别V 详细(表示所有可能的日志,默认级别) D 调试(表示所有合理的调试用日志) I 信息(表示正常使用时的日志) W 警告(表示原创 2016-11-10 19:51:02 · 1927 阅读 · 2 评论 -
Android的四个基本概念(线程通信和GLSurfaceView)
GLSurfaceView提供了下列特性:1> 管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图view上。 2> 管理一个EGL display,它能让opengl把内容渲染到上述的surface上。 3> 用户自定义渲染器(render)。 4> 让渲染器在独立的线程里运作,和UI线程分离。 5> 支持按需渲染(on-demand)和连续渲染原创 2016-09-18 12:27:25 · 2468 阅读 · 0 评论 -
android自定义View-继承
介绍anroid通过继承系统的控件自定义view方法是通过对OnDraw()方法进行复写来实现的举例继承TextView在textView的背景加上矩形的效果代码实现testView的代码public class TestView extends TextView { public TestView(Context context) { super(context);原创 2016-09-18 11:42:39 · 1395 阅读 · 0 评论 -
Android Service详解
service作为四大组件值得我们的更多的关注在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务。例如,一个从service播放音乐的音乐播放器,应被设置为前台运行,因为用户会明确地注意它的运行.在状态栏中的通知可能会显示当前的歌曲并且允许用户启动一个activity来与音乐播放器交互。Service的两种实现形式1.非绑定通过调用应用程序组件(例如原创 2016-09-09 10:58:28 · 1580 阅读 · 0 评论 -
安卓Binder入门
图说架构四部分结构四部分 Client ,server ,servicemanager,binder驱动binder内核:是一个文件,处于内核空间,能够传递跨进程的数据,Binder引用计数,建立Binder的内存空间和引用,分别对应Binder_node和Binder_ref,类似一个路由器的角色。Client:新建Client一般是通过集成AIDL.stub来完成,服务名类似域名...原创 2019-06-16 22:06:50 · 1139 阅读 · 5 评论 -
Android的Handler机制深入浅出
1.Message设计模式和成员命令设计模式callback存储post(runnable)里面的runnabletarget就是存储处理他的handle(这里是命令设计模式,命令和执行者分离,messagequene取出来执行不会混乱)享元设计模式静态变量sPoolSync是用来对象同步的。sPoolSize计数。sPool是链表的头指针。message是享元设计模式。整个安...原创 2019-06-29 23:26:58 · 748 阅读 · 2 评论 -
安卓Context-外观设计模式
外观模式定义外观模式就是复杂系统对外的简单统一接口。便于把内部的复杂和外部的简单调用隔离。Activity举例-代理模式Activity的startActivity()其实是context的子类完成的。Activity本身是context的子类,继承于ContextThemeWraper==》contextWraper==》context。contextWraper有个对象是mBase就是...原创 2019-06-30 23:07:56 · 1079 阅读 · 2 评论 -
Android中的语言和字符串资源
在任何情况下,从您的应用代码中提取 UI 字符串并将其存放在外部文件中都是个好办法。Android 在每个 Android 项目中都提供一个资源目录,从而简化了这一过程。如果您是使用 Android SDK 工具创建的项目(请阅读创建 Android 项目),工具会在项目的顶层创建一个 res/ 目录。此 res/ 目录中包含用于存放各类资源的子目录。此外,还包含几个默认文件(如 res/value原创 2016-11-14 14:20:01 · 1981 阅读 · 0 评论 -
Android启动Activity
Android和java启动的区别不同于使用 main() 方法启动应用的其他编程范例,Android 系统会通过调用对应于其生命周期中特定阶段的特定回调方法在 Activity 实例中启动代码。有一系列可启动 Activity 的回调方法,以及一系列可分解 Activity 的回调方法。了解生命周期回调 在 Activity 的生命周期中,系统会按类似于阶梯金字塔的顺序调用一组核心的生命周期方法原创 2016-11-14 14:41:33 · 1185 阅读 · 0 评论 -
ubuntu切换java版本
众所周知,ubuntu经常需要安装不同的java版本,他们之间的切换就是一个很大的问题1.Chose another Java loader:sudo update-alternatives –config java2.Chose another compiler (this is what you need):sudo update-alternatives –config javac3.Chos原创 2016-11-21 10:29:58 · 9584 阅读 · 2 评论 -
Android App之间通过Intent交互
Android 最重要的功能之一是应用能够基于它要执行的“操作”向另一个应用发送用户。 例如,如果您的应用有您要在地图上显示的公司地址,您无需在显示地图的应用中构建 Activity。 而是可以创建使用 Intent 查看地址的请求。Android 系统之后启动可以在地图上显示该地址的应用。用 Intent 在自己应用中的 Activity 之间进行导航。 您通常使用显式 Intent 执行此操作,原创 2016-11-14 22:42:07 · 2435 阅读 · 0 评论 -
Android 的 Sqlite基本操作
在 SQL 数据库中保存数据使用数据库将数据保存到数据库对于重复或结构化数据(比如契约信息)而言是理想之选。 本课程假定您基本熟悉 SQL 数据库并且可帮助您开始在 Android 中使用 SQLite 数据库。 您在 Android 中使用数据库所需的 API 在 android.database.sqlite 软件包中提供。定义架构和契约SQL 数据库的主要原则之一是架构:数据库如何组织的正式声原创 2016-11-14 17:04:20 · 1592 阅读 · 0 评论 -
Android文件(File)操作
Android 使用与其他平台上基于磁盘的文件系统类似的文件系统。本文讲述如何使用 Android 文件系统通过 File API 读取和写入文件。File 对象适合按照从开始到结束的顺序不跳过地读取或写入大量数据。 例如,它适合于图片文件或通过网络交换的任何内容。本文展示如何在您的应用中执行基本的文件相关任务。假定您熟悉 Linux 文件系统的基础知识和 java.io 中的标准文件输入/输出 A原创 2016-11-14 16:18:43 · 4441 阅读 · 1 评论 -
Android的SharedPreferences(首选项)保存键值对
使用共享首选项如果您有想要保存的相对较小键值集合,您应使用 SharedPreferences API。SharedPreferences 对象指向包含键值对的文件并提供读写这些文件的简单方法。 每个 SharedPreferences 文件由框架进行管理并且可以专用或共享。本文展示如何使用 SharedPreferences API 存储和检索简单的值。注:SharedPreferences AP原创 2016-11-14 15:17:42 · 1964 阅读 · 0 评论 -
Android fragment(片段)构建灵活的UI
在以支持多种屏幕尺寸为目标设计应用时,您可以在不同的布局配置中重复使用您的fragment从而根据可用的屏幕空间优化用户体验。例如,在手机设备上,由于采用单窗格用户界面,因此可能更适合一次只显示一个fragment。 相反,由于平板电脑屏幕尺寸较大,可以为用户显示更多信息,因此最好将片段设计为并排显示。图 以不同配置在不同屏幕尺寸的设备上为同一 Activity 显示的两个片段。在较大的屏幕上,两原创 2016-11-14 15:00:11 · 1452 阅读 · 1 评论