android杂学
文章平均质量分 67
yuezheyue123
这个作者很懒,什么都没留下…
展开
-
Socket实现数据通信
1、服务端:浏览器工作原理是遇到图片会开启一个线程进行单独的访问,因此在服务器端加入线程技术。(在客户端上传文件的时候,服务端也需要开启线程将流写成文件)public class ServerDemo { public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(8888); while(true){原创 2020-06-15 17:27:55 · 231 阅读 · 0 评论 -
lambda表达式
1、使用lambda的前提:①使用lambda必须具有接口,且要求接口中有且只有一个抽象方法。如果有多个抽象方法,那么必须要有多个实现,lambda的形式并不支持。②必须具有上下文推断,即方法的参数和局部变量类型要为lambda对应的接口类型。2、标准格式:(参数类型 参数名称) -> { 代码语句 }①无参传递,无参返回public interface Cook { void makeFood();}public static void invoke(Cook cook)原创 2020-06-15 15:11:55 · 206 阅读 · 0 评论 -
线程基本原理-生产者-消费者问题
生产者-消费者问题就是线程协作的问题,notify通知的时候,会先唤醒等待时间最长的对象,因此不用担心自己唤醒自己的情况。public static void main(String[] args) { Baozi baozi = new Baozi(); baozi.flag = false; Chihuo Chihuo = new Chihuo("吃货", baozi); Chihuo.start(); Baozipu原创 2020-06-15 14:23:36 · 503 阅读 · 0 评论 -
线程基本原理
1、每个线程都会创建自己的栈空间,运行自己的run方法。线程的两种创建方法:①如果是重写Thread的run方法,因为使用的自己独有的资源空间,不存在线程同步的问题(没有实现资源共享)。②如果是多个Thread使用同一个Runnable对象,因为Runnable是一个共享的资源。多个线程要进行访问共享的数据的时候就需要线程同步的技术,否则就会出现数据不同步,也就是线程不安全(可以实现共享资源)。2、线程同步线程安全问题都是由全局变量及静态变量引起的。若每个线程对全局变量、静态变量只有读操作,而无写原创 2020-06-15 11:30:09 · 1570 阅读 · 0 评论 -
生成aar文件,并进行依赖
生成arr包,然后在项目中引用,那么做到依赖包中的文件只能查看不能修改的效果。1、创建gradle文件apply plugin: 'maven'/*依赖指定库*/ext { uploadArr = { name -> uploadArchives { repositories.mavenDeployer { // 配置本地仓库路径,项目根目录下的repository目录中//原创 2020-06-09 14:13:38 · 574 阅读 · 0 评论 -
git命令
1.其它git init:初始化本地库git status:查看工作区、暂存区的状态git add <file name>:将工作区的“新建/修改”添加到暂存区 (可以提交单个文件/文件夹,格式注意斜线方向:E:/AndroidStudioWorkSpace/xxx/src/main/java/com/fpc/ldjg/supervise)git rm --cached ...原创 2020-04-07 18:01:08 · 214 阅读 · 0 评论 -
android中手动收缩软键盘
在finish()之前调用下面方法private void closeKeyboard() {View view = getWindow().peekDecorView();if (view != null) {InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPU...原创 2018-11-08 17:31:53 · 228 阅读 · 0 评论 -
android中设置引导页
通常情况下,我们需要设置一个SplashActivity作为启动页,这种情况虽然仅仅是加载一个没有任何耗时操作的activity,但是仍然会出现白屏。因为在此期间需要初始化application,或者一些其他设置。我们解决方法是在主题中设置windowBackground,这样在启动App的时候,优先显示背景,解决白屏问题。1.在下面这种情况下,我们设置的是app的主题,这样在任何activi...原创 2018-11-16 11:08:26 · 624 阅读 · 0 评论 -
杂学(四)
1.隐式调用 Intent intent = new Intent(); intent.setAction(&amp;amp;quot;com.android.plugin.client&amp;amp;quot;); startActivity(intent);需要添加category,否则隐式调用不能生效 &amp;amp;amp;lt;activity android:name=&amp;amp;quot;.Spa原创 2019-01-07 15:30:23 · 129 阅读 · 0 评论 -
android中代码中设置系统闹钟
原创 2019-02-21 17:59:34 · 2143 阅读 · 5 评论 -
Dagger2的使用
1.使用运行时注解 (分为:成员变量注入 、构造方法注入 、 方法注入)@Inject 标记用来注入的依赖@Component 标记在接口上,注入器@Module 标注在类上,用来告诉Component,可以从这个类中获取依赖对象。相当于工厂,用于生成各个类的实例@Provides 和@Module配合使用,标记在方法上,用来获取依赖对象的实例。@Named 可以对不能区分...原创 2019-03-07 14:15:01 · 214 阅读 · 0 评论 -
沉浸式设计
使用沉浸式的设置,最多能够兼容的4.4使用一些特殊的手段能兼容到4.4 使用的透明的状态栏对于5.0+以上的系统来说,只要是添加了compat的依赖,也就是修改成compat的主题,那么就会实现沉浸式的效果。并且跟随着colorprimaryDark属性的颜色改变。1)通过主题修改 使用的colorPrimaryDark的颜色2)通过NavigationBar需要在values-v2...原创 2019-03-07 17:42:44 · 428 阅读 · 0 评论 -
小题目
进行Long值的比较Long l1 = -128L;Long l2 = -128L;Long l3 = 127L;Long l4 = 127L;System.out.println("l1==l2----" + (l1 == l2)); //trueSystem.out.println("l1==l28L----" + (l1 == -128L));//trueSystem....原创 2019-03-12 18:31:07 · 175 阅读 · 0 评论 -
java和js交互
1.java调用Js代码①java代码初始化webview,在这里要注意使用setJavaScriptEnable(true),这样才能支持js。调用js方法,分为有参和无参,调用的时候需要loadUrl("javascript:方法名")②js代码2.java和js互调①java代码初始化代码被js调用的java代码,然后调用js中的方法...原创 2019-03-18 15:24:17 · 1110 阅读 · 0 评论 -
倒计时计时器工具类
/**利用timer和handler进行循环计数,使其操作更加方便,计时更加准确startCountDownTime()开始计数stop()停止计数 */public class CountDownTimeUtilTest {private static CountDownTimeUtilTest countDownTimeUtil=null;private CountDown...原创 2019-03-26 11:06:46 · 359 阅读 · 0 评论 -
生成jar包
在app的gradle中配置下面代码,然后在Terminal中使用gradle makeJar命令,生成jar包。将jar包引入其他的项目中就可以进行使用。将jar发布到jcenter中,但是还没有验证成功https://blog.csdn.net/forgot2015/article/details/52629397...原创 2019-04-01 16:03:46 · 234 阅读 · 0 评论 -
android中通过usb和pc进行通讯
找到的最好的博客https://blog.csdn.net/jakemiao/article/details/17270785?locationNum=7&fps=1下面是demo:https://github.com/yunzheyue/usbCommunication使用时,将app安装到手机上,然后运行testPcClient类的main方法。这时候在main()方法中,会...原创 2018-10-25 10:05:50 · 7047 阅读 · 0 评论 -
功能清单使用permission进行自定义权限
在功能清单中的permission的使用,可以进行自定义权限,给四大组件添加必要的权限。当使用隐式intent进行跨应用进行调用的时候提高安全程度。比如在app1中的功能清单中1.进行声明权限设定权限,注意要添加category,否则隐式的intent的不能进行接受。2.在app2中进行启动app1中的activity。发送隐式的intent。3.对于protectionLevel...原创 2018-10-17 17:35:33 · 940 阅读 · 0 评论 -
android杂学(三)
1.打开assets资源文件夹中的资源文件https://blog.csdn.net/fengyuzhengfan/article/details/38360017下面是打开assets文件夹中的txt文件2.更换app的字体,可以参考github上的库https://github.com/GcsSloop/FontsManager对于单个字体的更改可以将字体库放在assets中,然后...原创 2018-10-09 16:45:53 · 128 阅读 · 0 评论 -
Android解决viewpager,fragment,SwipeRefreshLayout,ScrollView,横向滚动控件互相嵌套后产生的横向滚动控件不能滚动或边界处理冲突的问题
1.现在想实现一个功能,就是viewpager嵌套fragment嵌套SwipeRefreshLayout嵌套ScrollView嵌套横向滚动控件后,横向滚动的控件仍然具有边界处理的效果。 尝试过用的是著名的开源mpandroidChart的横向滚动的柱状图,但是在前面的几个控件的嵌套下,横向滚动失灵。网上的解决方案是重写ScrollView的canScroll()方法,如果是滚动的柱状图,那么...原创 2018-07-31 11:15:16 · 830 阅读 · 1 评论 -
Android Studio误删了app.iml文件后,项目运行不起来,进行恢复.iml文件
恢复.iml文件按照下面四个步骤: 1.将gradle文件中删除一行空格,目的是出现sync now 2.点击右上角Gradle,选中你的moudle 3.点击上面的刷新按钮 4.点击sync now 你就发现iml文件重新生成了。...原创 2018-07-31 14:33:56 · 10781 阅读 · 0 评论 -
Android中ListView学习---你可能不知道的细节
1.将分割线设置为透明 android:divider=”@null”2.取消ListView的item的点击效果。android:listSelector=”#00000000”3.listView滚动和选择item 设置listView需要显示在第几行 listView.setSelection(N); 还可以实现平滑的过度 listView.smoothScrollBy(...原创 2018-08-02 14:23:24 · 309 阅读 · 0 评论 -
最新Android-JNI学习(二)-使用.so文件
一、将在上篇文章中获取到so文件复制到当前的工程中,存放的位置有两种办法 1.将文件复制到libs文件夹下 然后在gradle中android下添加 sourceSets { main { jniLibs.srcDirs = [‘libs’] } }2.创建jnilibs文件夹,然后将文件复制进去 二、在当前的工程中,使用so文件。 s...原创 2018-07-13 11:12:36 · 299 阅读 · 0 评论 -
android--最常用的git命令,将项目推到github或码云等,回退代码
1.本地项目上传到码云或是github等网站 git init git add . git commit -m “first commit” (first commit 本次提交的内容) git remote add origin https://github.com/xxxx/xxx.git git push -u origin master (这一句执行的时候 可能需要输入你的 ...原创 2018-08-21 17:11:18 · 677 阅读 · 0 评论 -
androidstudio设置
gradle下载地址: https://services.gradle.org/distributions/ 进入.gradle文件夹 查看gradle的版本,注意,你的是哪个版本就下载哪个版本,比如我的是3.3,那就下载3.3. 将下载好的gradle-3.3-all.zip放到.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2dg9u9...原创 2018-12-03 09:12:27 · 127 阅读 · 0 评论 -
java--泛型的使用
一、泛型类 就是在类名的后面添加这样的形式,然后在整个类中都能用这个T类型 二、泛型方法 就是在方法的返回值类型的前面添加 ,这样在整个的方法中,都能使用T类型 三、有界类型参数(就是限制参数的类型是一致) 如果在一个方法中传递的多个参数,并且保证参数的类型一直,那么就需要Comparable,这样就限定了传递的参数必须是T类型。如果不是就会报错。 四、类型通配符 ①...原创 2018-09-10 11:00:34 · 141 阅读 · 0 评论 -
android Studio使用离线的gradle
gradle下载地址: https://services.gradle.org/distributions/ 进入.gradle文件夹 查看gradle的版本,注意,你的是哪个版本就下载哪个版本,比如我的是3.3,那就下载3.3. 将下载好的gradle-3.3-all.zip放到.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2dg9u9...原创 2018-09-07 10:44:57 · 1286 阅读 · 0 评论 -
android---布局ConstraintLayout学习笔记
1.基本的约束条件 这个意思是: 约束当前的view的左边,在某个view的左边 layout_constraintLeft_toLeftOflayout_constraintLeft_toRightOflayout_constraintRight_toLeftOflayout_constraintRight_toRightOflayout_constraintTop_toTo...原创 2018-09-07 14:53:50 · 332 阅读 · 0 评论 -
android--开源项目总结
1提升布局加载速度:X2C 这是掌阅ireader 对外开源的一个库,可以自动化的提升加载布局的效率。 原理我简单说一下大家肯定都懂,我们在编写布局文件的时候,绝大多数情况下都是写xml 文件,然后通过setContentView或者 inflate 加载,大多数同学可能也知道,对于 xml 文件在 LayoutInflater 中需要解析,并且在首次加载的部分控件还需要通过反射去生成对象。 ...原创 2018-09-07 16:24:37 · 424 阅读 · 0 评论 -
android中AIDL进程间通讯(Activity--service)
为了实现进程间通信,尤其是在涉及多进程并发情况下的进程间通信。因为多个进程是不共享一片内存区域,所以不能实现数据共享。步骤:1.创建aidl的接口,并且定义两个线程之间通讯的方法。一般用于activity和Service之间的通讯。2.如果是创建自定义的类,需要在接口方法中指明数据流通的方向,如果方向不正确的话,是不能获取数据的。3.对于自定义的Bean 一定要保证在java包下和ai...原创 2018-10-12 16:21:15 · 428 阅读 · 0 评论 -
android杂学(一)
1.进行monkey测试 adb shell monkey -p 包名 次数monkey runner测试2.gradle命令gradlew tasks //列出所有的任务gradlew clean build //先clean然后build任务3.使用debug的时候,进行修改运行时候的变量。选中后,可以使用右键setValue进行修改数值。或是直接使用f2快捷键进行修...原创 2018-10-08 14:56:23 · 138 阅读 · 0 评论 -
android中使用handler进行主线程和分线程,分线程和分线程通讯
1.我们常常在activity中使用handler,主要是从子线程和主线程的通讯进行更新UI。2.如果想实现线程之间的消息的传递,就不能使用默认的Looper,这时候需要使用要处理线程的looper。下面是手写的线程间的通讯3.在android中有可以使用HandlerThread进行替代上面的写法。...原创 2018-10-08 17:09:59 · 235 阅读 · 0 评论 -
android杂学(二)
1、app中的各组件进行共享数据Application在app中只有一个实例,并且在Application中是可以存储数据的。我们可以通过订阅者模式的写法实现一个和EventBus一样的功能。即在一个地方修改数据,然后通知其他的地方数据已经更改。但是这样也会带来一个新的的问题。application在app长时间搁置的情况下,很可能被回收,这样数据就被清空,从而发生空数据的问题。因此使用这样的通...原创 2018-10-09 11:48:18 · 129 阅读 · 0 评论 -
最新Android-JNI学习(一)-创建.so文件
根据前面学习的c学习的基础知识,在as下,进行手动的ndk开发 1.在java类中先写native方法,并且加载将将要生成的c或c++的文件的名称 2.在terminal的命令行中输入命令生成头文件 javah -d ../jni com.xxx.xxx 。其中-d是生成文件夹的意思 3.在生成的jni,右键创建c或c++代码。 4.由于as现在支持cmake的构建nd...原创 2018-07-13 11:10:21 · 345 阅读 · 0 评论