Android开发( 右侧选择分类 )
cnbzlj

android 使用signingConfigs进行打包

今天,简单讲讲如何使用android studio指定证书打包。我们使用Android Studio 运行我们的app,无非两种模式:debug和release模式。debug模式debug模式使用一个默认的debug.keystore进行签名。这个默认签名(keystore)是不需要密码的,它的默认位置在C:\Users\<用户名>\.Android\debug.keystore,如
2135 人浏览
cnbzlj

android 获取文件夹下的所有文件

在做工作时,我们经常需要遍历所有一个文件夹下的所有文件夹,发现其实也很简单。直接上代码/*读取输入的某个文件夹中所有的txt文件 * 显示文件名、文件内容 * */ import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOExce
4118 人浏览
SuperBig

Android Service详解(八)---前台服务详解

这是第八篇文章主要讲的是如何实现一个前台服务回顾可以到第一篇文章从头了解Service:Android Service详解系列1,Android Service详解(一)---概述4,Android Service详解(四)---绑定服务BoundService详解之扩展Binder类7,Android Service详解(七)---绑定服务BoundService详解之Messenger双向通信
5075 人浏览
SuperBig

Android Service详解(七)---绑定服务BoundService详解之Messenger双向通信的实现

这是第七篇文章主要讲的是BoundService中用Messenger实现IPC。前三篇文章对扩展Binder类和AIDL进行了说明,绑定服务一般通过AIDL和Messenger来实现IPC一、概述Messenger实现IPC通信,底层也是使用了AIDL方式。和AIDL方式不同的是, Messenger方式是利用Handler形式处理,因此,它是线程安全的,这也表示它不支持并发处理;而AIDL方式
2941 人浏览
SuperBig

Android Service详解(六)---绑定服务BoundService详解之AIDL的自定义属性使用

这是第六篇文章主要讲的是BoundService中用AIDL实现IPC,自定义属性的使用,上篇博客已经说明了AIDL应该如何使用,但是如果想传入一个自定义的类的时候怎么办呢?那么这篇博客将对这种情况进行详细描述废话不多说了,直接上步骤,前期的步骤上篇博客已经说明了,这篇是对上篇博客的扩展1.新建一AIDL文件,并与你即将定义的类型名字相同,例如Person.aidl2.新建一个类Person.ja
2748 人浏览
SuperBig

Android Service详解(五)---绑定服务BoundService详解之AIDL的使用

一、什么是AIDLAIDL(Android Interface Definition Language)安卓接口定义语言二、为什么使用AIDL呢?如果将Service变成远程Service的话,使用扩展的Binder进行通信会报错:这是由于在Bind Service按钮的点击事件里面我们会让MainActivity和MyService建立关联,但是目前MyService已经是一个远程Service
2950 人浏览
SuperBig

Android Service详解(四)---绑定服务BoundService详解之扩展Binder类

这是第四篇文章主要讲的是BoundService中使用扩展Binder类实现一、基础知识1.什么是绑定服务绑定服务是客户端-服务器接口中的服务器。绑定服务可让组件(例如 Activity)绑定到服务、发送请求、接收响应,甚至执行进程间通信 (IPC)。 绑定服务通常只在为其他应用组件服务时处于活动状态,不会无限期在后台运行。2.实现原理应用程序组件(客户端)通过调用bindService()方法能
3120 人浏览
SuperBig

Android Service详解(三)---IntentService

这是第三篇文章主要讲的是IntentService的使用一、Service的耗时操作如何解决呢?不管是何种Service,它默认都是在应用程序的主线程(亦即UI线程)中运行的。所以,如果你的Service将要运行非常耗时或者可能被阻塞的操作时,你的应用程序将会被挂起,甚至会出现ANR错误。为了避免这一问题,你应该在Service中重新启动一个新的线程来进行这些操作。现有两种方法大家参考:① 直接在
3109 人浏览
SuperBig

Android Service详解(二)---StartService

一丶概述启动服务由另一个组件通过调用 startService() 启动,这会导致调用服务的 onStartCommand() 方法。服务启动之后,其生命周期即独立于启动它的组件,并且可以在后台无限期地运行,即使启动服务的组件已被销毁也不受影响。 因此,服务应通过调用 stopSelf() 结束工作来自行停止运行,或者由另一个组件通过调用 stopService() 来停止它。应用组件(如 Act
3461 人浏览
SuperBig

Android Service详解(一)---概述

一、什么是ServiceService 是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可以处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序交互,而所有这一切均可在后台进行。二、那么服务可以做什么呢?Serv
3926 人浏览
android

Android studio 2.2 2.3 2.4 如何使用kotlin插件

Google I/O 大会后,Android Studio 就发布了3.0 金丝雀版本,支持 Kotlin 语言,增加了 Gradle 编译速度,支持即时应用开发,在 Android O 模拟器中增加了 Google Play Store,自适应图标等 20 多项新功能。今天我们不讨论Android Studio 3.0 使用Kotlin,我会在后面的博客中介绍,今天是讨论和学习
4840 人浏览
android

在Android studio3.0 用kotlin语言开发Android app demo

Google I/O 大会后,Android Studio 就发布了3.0 金丝雀版本,支持 Kotlin 语言,增加了 Gradle 编译速度,支持即时应用开发,在 Android O 模拟器中增加了 Google Play Store,自适应图标等 20 多项新功能。今天我们一起讨论和学习android studio 3.0本如何使用Kotlin语言开发Android应用。废话不多说,我们直上
4378 人浏览
bbsmax

HDFS 读写流程-英

HDFS 文件读取流程The client opens the file it wishes to read by calling open() on the FileSystem object, which for HDFS is an instance of DistributedFileSystem (step 1 in Figure 3-2).DistributedFileSystem c
1801 人浏览
bbsmax

深度递归必须知道的尾调用(Lambda)

引导语本文从一个递归栈溢出说起,像大家介绍一下如何使用尾调用解决这个问题,以及尾调用的原理,最后还提供一个解决方案的工具类,大家可以在工作中放心用起来。递归-发现栈溢出现在我们有个需求,需要计算任意值阶乘的结果,阶乘我们用 n!表示,它的计算公式是:n! = 123……(n-1)n,比如说 3 的阶乘就是 123。对于这个问题,我们首先想到的应该就是递归,我们立马写了一个简单的递归代码://阶乘计
1793 人浏览
tinuv

Kotlin学习

定义包,引入包packageme.tinuv importjava.util.*这个与Java是相似的.定义变量与Java不同,kotlin的类型都是写在后面的.vala:Int=10100100 valb=10也可以省略,kotlin会自动推断,但我不知道是不是所有类型都可以自动推断.自动推断必须要有初始值valc:Int c=100注意:定义只读局部变量使⽤关键字 val 定义.只能
1719 人浏览
tinuv

Java正则表达式简单学习

与正则表达式相关的类Pattern类Pattern 模式,代表匹配的模式,Pattern没有公共的构造方法,只有一个私有的构造方法privatePattern(Stringp,intf)通常使用静态方法compile()来生成一个Pattern对象publicstaticPatterncompile(Stringregex)compile()方法的参数就是一个正则表达式,正则表达式待会再说.Mat
1723 人浏览
tinuv

Android自定义组合控件基础

自定义组合控件我以前没有用过,对我来说是一个新的领域,由于今天的时间很少了,没有很只学了一点点,但也记录下来,作为一个开头.实现一个最简单的组合控件实现组合控件很关键的一点是动态加载布局,就是使用LayoutInflater来动态加载布局,加载完了之后基本上一个最简单的组合控件就算完了.组合控件在统一界面风格方面的作用很大,尤其是重用的时候,可以减少很多代码冗余,因为在组合控件可以处理一些公共的逻
1911 人浏览
tinuv

反射学习(一)

理论学习Class类关于类的抽象,或者说,Class类描述了一个类,每个类中都有一个Class对象,在Java中,类是现实世界的一种抽象,或者说是一种描述,比如Person类,可以根据需求将人抽象成具有性别,年龄属性,能吃饭(方法)的一种实体,同样Class类也抽象了Java类中的一些特点.每一个类中都有一个Class对象,可以通过如下方法获得一个Class类的实例ClassstringClass
1617 人浏览
tinuv

反射学习(二)

对成员的访问访问字段通过反射获取到的字段使用Field类表示,Field类提供了一系列的方法来访问基础数据类型,如getInt(),getBoolean()Fieldfield=testClass.getField("intData"); inta=field.getInt(test);field.setInt(test,5);通过setInt()还可以修改一个对象的值,要注
1849 人浏览
tinuv

Activity学习笔记

笔记Activity有四种基本状态Active/Running:一个新的Activity启动后,在屏幕的最前端,在栈顶,处于可见且可与用户交互的状态Paused:失去焦点,如被一个Dialog覆盖后,此时仍然与窗口管理器保持连接,系统继续维护其内部状态,仍然可见Stopped:被另一个activity覆盖,失去焦点并不可见时Killed:当Activity被系统杀死回收或者没有被启动时,处于Kil
1739 人浏览