.gradle\wrapper\dists 目录 gradle-x.xx-all 的文件夹 Gradle在android中基本使用 Gradle在android中基本使用 1.mobile-stage.../app/build.gradle apply plugin: 'com.android.application' //声明是Android程序 android { //编译sdk的版本 compileSdkVersion...build.gradle中添加maven仓库的位置 2.项目中的build.gradle引用jar 用冒号分割: groupId:artifactId:version 在项目中就可以使用jar了...Build时失败了两次,对比下demo和依赖库中是没有lint检查。...task代表着Gradle构建过程中可执行的最小单元。例如当构建一个组件时,可能需要先编译、打包、然后再生成文档或者发布 等,这其中的每个步骤都可以定义成一个task。
ULID 在 Java 中的应用: 使用 getMonotonicUlid 生成唯一标识符 摘要 猫头虎博主在此! 近期,我收到了许多关于如何在 Java 中生成 ULID 的问题。...ULID, Java, getMonotonicUlid, Universally Unique Lexicographically Sortable Identifier 引言 在分布式系统中,为每个实体生成一个唯一标识符是一个常见的需求...ULID (Universally Unique Lexicographically Sortable Identifier) 是一种用于生成全球唯一标识符的方法。...可读性: 使用 Crockford’s Base32 编码,可以避免混淆的字符。 3. 如何在 Java 中使用 getMonotonicUlid?...实际应用场景 在分布式系统、事件日志、数据库主键等多种场景中,ULID 都可以作为一个高效、可靠的唯一标识符生成策略。 总结 ULID 是一个强大的工具,尤其是在需要按时间排序的场景中。
前言 经常我们会有这样的需求,B页面操作后,要求A页面处理相关数据,像这样一般我们都是,要么B页面保留A页面的引用,要么使用广播,但是写起来还是想对麻烦的,用Rxbus就可以很容易和优雅的解决 相同功能的组件用的比较多的有...Otto(不再维护不推荐使用)和EventBus 如果我们的项目使用Rxjava的话 我就比较推荐用Rxbus了 如果项目中没有使用Rxjava 那还是使用EventBus 吧 毕竟Rxbus...只有500+的Star 而EventBus可是1W+ 而且Rxbus`很多地方还不完善 使用 总的来说 我们要做的无外乎两件事:发送事件 和 接受事件 但是接受事件的对象一定要先注册到Rxbus中
原文 https://blog.csdn.net/liuhe688/article/details/6532519 在Android中实现异步任务机制有两种方式,Handler和AsyncTask。...在特定场合下,并不是所有类型都被使用,如果没有被使用,可以用java.lang.Void类型代替。...在使用的时候,有几点需要格外注意: 1.异步任务的实例必须在UI线程中创建。 2.execute(Params... params)方法必须在UI线程中调用。...接下来,我们来看看如何使用AsyncTask执行异步任务操作,我们先建立一个项目,结构如下: ?...mFuture对象的done()方法里,构建一个消息时,这个消息包含了一个AsyncTaskResult类型的对象,然后在sHandler实例对象的handleMessage(Message msg)方法里,使用下面这种方式取得消息中附带的对象
前言 Android原生的多线程和异步处理简直糟透了,反复的嵌套让代码看起来十分不明了,多线程上也没有iOS的dispatch好用,但是用了Rxjava后就会有所改善,虽然代码量看起来会多一点,但是逻辑就清晰多了...在事件处理过程中出异常时,onError() 会被触发,同时队列自动终止,不允许再有事件发出。...在一个正确运行的事件序列中, onCompleted() 和 onError() 有且只有一个,并且是事件序列中的最后一个。...但是不能就都用Flowable 因为Observable的性能较高 Single: 和Observable,Flowable一样会发送数据,不同的是订阅后只能接受到一次 普通Observable可以使用...那我们只会接受到错误 而不是错误的前一个事件 Android中应用 添加依赖 implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' implementation
介绍 之前介绍了如何使用命令行将Jar包根据配置文件进行ProGuard,以及ProGuard的过程,会遇到的问题等。接下来会介绍常用的ProGuard如何配置参数。...不常用的可以在官网中查询如何使用。 java -jar proguard.jar @myconfig.pro Filter 每一个类、属性、方法都会有一个全名,例如java.lang.String。...这些文件不会被打包到output jar包中。指定的Library应该至少包含一个Class文件被Application Class文件中使用extended继承了。...所以你不能使用这个option。如果因为这个option无法找到那个class的话 ,ProGuard会打印出来Warning的。..., android.util.AttributeSet, int); public void set*(...); } -keepclassmembers Keep住类中的成员。
Menu(菜单)是Android中一定会使用的模块,每个Android项目都会用到Menu来给用户起到选择和导航的作用,提升用户体验,下面通过本文给大家分享android 中menu使用,需要的朋友一起看看吧...就是点击右上角的一个按钮的时候会出现一个下拉列表差不多的东西,这个功能的实现其实只需要下面的两步,每一个activity都可以拥有自己独一无二的menu,具体的格式可以自己进行定义,详细的创建步骤如下 ①在res下的menu中创建...<menu xmlns:android="http://schemas.android.com/apk/res/android" <item android:icon="@drawable...); break; } return true; } //onCreateOptionsMenu和onOptionsItemSelected方法为Acitivity中的...总结 以上所述是小编给大家介绍的Android中menu使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。
Android 中 ThreadLocal使用示例 概要: Demo描述: ThreadLocal使用示例....ThreadLocal的使用在Looper类中得到很好的体现.保证了每个线程和一个Looper一一对应,并且每个Looper之间不受影响....* Demo描述: * ThreadLocal使用示例...* * * ThreadLocal的使用在Looper类中得到很好的体现.保证了每个线程和一个Looper一一对应,并且每个Looper之间不受影响....="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android
Android中的drawable resource的属性太多,进阶路上必须要记住啊 看了下面的一段code就明白了: <stroke android:width="2dp" android:color="#dcdcdc...实心,就是填充的意思 android:color 指定填充的颜色 gradient 渐变 android:startColor 起始颜色 android...android:gradientRadius="50") stroke 描边 android:width="2dp" 描边的宽度 android:color
Android中SharedPreferences使用小记 一、引言 Android中使用SharedPreferences来进行简单数据的持久化处理,从名字就可以了解,其设计目的是为了保存应用程序的一些偏好设置...其与iOS开发中的NSUserDefault十分类似,并且,他们的实质都是采用XML格式的文件来存储数据。...如果要保证数据立马存入磁盘,要使用commit()方法。 ...第一个参数为键 第二个参数为此键不存在时使用的默认值 long getLong(String var1, long var2); //通过键获取浮点值 第一个参数为键 第二个参数为此键不存在时使用的默认值...} }; //进行注册 sharedPreferences.registerOnSharedPreferenceChangeListener(listener); 温馨提示:可以在Android
\.android“ 下面。...如果想改变AVD的路径设置,也有2个办法 解决办法一: 新添加一个环境变量,名字为 "ANDROID_SDK_HOME”,然后把变量值改为你想将".android”文件夹(AVD信息)所放置的位置...解决办法二: 修改配置文件中的路径,比如我的AVD名称是MyAVD, 打开 C:\Documents and Settings\Administrator\.android\avd...目录中的文件MyAVD.ini文件,找到 target=android-5path =C:\Documents and Settings\Administrator...android配置运行的时候出现无法找到PANIC: Could not open: C:\Users\Administrator\.android/ 因为你打不开,那个文件夹可能加密了,换个路径,比如换到
使用Android studio3.2,在gradle中中配置: 在project的bulid.gradle中增加: classpath 'com.google.protobuf:protobuf-gradle-plugin...在APP目录下的buid.gradle中,增加: apply plugin: 'com.google.protobuf' android { sourceSets { main {...最后给个使用的demo,序列化和反序列化: package com.newcapec.testsqllite.protobuf; import com.google.protobuf.InvalidProtocolBufferException
> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="...android:layout_height="wrap_content" android:completionHint="请选择你喜欢的歌曲" android:completionThreshold...; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory...; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.view.MotionEvent...; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener
本文实例为大家分享了ExpandableListView使用示例,供大家参考,具体内容如下 MainActivity: public class Expandable_test extends Activity...="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"...xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height...="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height..." android:gravity="bottom" android:id="@+id/item_text"/ </LinearLayout ?
在Android的开发中,我们知道布局文件可以让我们很方便的对各个UI控件进行位置安排跟属性设置,而在程序中可以直接取得控件并赋予对应操作功能。...但是,如果是一个复杂的界面设计,我们把所有布局都放在一个文件中来描述,那这个文件会显得比较臃肿而结构则变得无法清晰了。...说了那么多,其实使用并不难,而且还很简单,那接下来我们来举例来看看。 由于是讲布局的安排跟组合,那我们这里就只拿布局文件来解析下,其他程序代码跟其他程序没区别。...> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation...通过以上layoutP中的整合,layoutA与layoutB就成为layoutP中的子元素,不仅使得整个布局代码结构清晰,提高了可读性,而且可以将界面排版中的功能模块清楚的划分
本文实例为大家分享了SharedPreferences简单使用案例,供大家参考,具体内容如下 MainActivity: public class SharedPreferencesTestActivity...="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"...android:id="@+id/Text_Test" android:layout_weight="1"/ </LinearLayout <Button android..." android:id="@+id/read" android:text="读"/ <Button android:layout_marginTop="25dp"...android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/write
详解Android 中AsyncTask 的使用 1、首先我们来看看AsyncTask 的介绍: Handler 和 AsyncTask 都是android 中用来实现异步任务处理的方式;其中:...缺点:代码相对臃肿,多个任务同时执行时,不易对线程进行精确的控制; AsyncTask :比Handler 更轻量级一些,适用于简单的异步处理; 优点:简单 | 快捷 | 过程可控; 缺点:使用多个异步操作时就变得复杂起来...F、cancel(); : 取消一个正在执行的任务,在UI线程中完成,用AsyncTask的对象进行调用,参数为true/false; 4、使用AsyncTask 时注意事项: A、异步任务实例必须在...; 5、案例:使用AsyncTask 实现图片的下载: Activity类,主程序的入口: public class MainActivity extends Activity {...; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.util.Log; /*
Parcelable是Android为我们提供的序列化的接口。 对比: 1、Parcelable相对于Serializable的使用相对复杂一些。...简单使用: 进行Android开发的时候,无法将对象的引用传给Activities或者Fragments,我们需要将这些对象放到一个Intent或者Bundle里面,然后再传递。...package com.status.mattest; import android.os.Parcel; import android.os.Parcelable; public class Book...注意:类中有多个String或者其它相同对象的话,那么writeToParcel中writeString的顺序是怎么样的,protected Book(Parcel in) {}中readString的顺序就得是怎么样的...中Parcelable的使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。
Android开发中Fragment主要用来提供更灵活的界面构造形式,顾名思义,英语中fragment一词就是片段的意思。...我们可以创建一个扩展自Fragment的类,在重载的onCreateView方法中填充xml定义的布局,然后在其容器Activity所使用的xml布局文件中,像引入其它视图组件一样对其进行引入。...在作为容器的Activity代码中使用FragmentManager可以获取到对这个Fragment的引用。...,同时在Fragment类中定义该接口类型的一个成员,在重载的onAttach中获取容器activity引用,赋值给该成员。...这样当触发了Fragment中的某个组件的事件时,就能调用该接口的方法,实现Fragment向容器Activity传递消息和数据了。
Android 中 onSaveInstanceState()使用方法详解 覆盖onSaveInstanceState方法,并在onCreate中检测savedInstanceState和获取保存的值
领取专属 10元无门槛券
手把手带您无忧上云