- 博客(22)
- 收藏
- 关注
原创 vue 双向绑定(v-model 双向绑定、.sync 双向绑定、.sync 传对象)
1. v-model实现自定义组件双向绑定v-model其实是个语法糖,如果没按照相应的规范定义组件,直接写v-model是不会生效的。再说一遍,类似于v-on:click可以简写成@click,v-model是两个表达式合在一起的简写。记住这个,下面具体说明。1.1 input双向绑定子组件MyInput.vue:<template> <div>输入 <input :value="value" @input="input"/> &
2021-09-09 10:40:51
904
原创 如何让多个线程顺序执行
先说一下为什么会有这样的要求,如果是简单的要求按顺序执行代码,直接一行行写下来就行了。但是接口调用我们一般都放在工作线程里面,而且有时候需要拿一个接口返回的参数去请求另一个接口,这就需要控制线程按某种顺序执行。方法1:join()public class A1 extends Thread { @Override public void run() { try { System.out.println("--- thread A1 start --
2021-04-19 18:28:19
316
原创 Service 的两种启动方式和「Service 与 Activity 数据交互」
1. Service 的两种启动方式Activity 中可以有两种方式启动 Service,不同方式启动时 Service 的生命周期也不一样,现在在 Activity 中定义四个 Button,分别是 startService、stopService、bindService、unbindService,Service 中各生命周期中分别打印 Log 日志,通过日志查看生命周期执行情况:// ...
2020-04-24 10:12:03
662
原创 Handler 消息机制以及内存泄漏
1. 消息机制1.1 post系列通过查看源码可知,post(Runnable r)、postDelayed(Runnable r, long delayMillis)最终调用的都是sendMessageDelayed方法:// post public final boolean post(Runnable r){ return sendMessageDelayed(getPost...
2020-04-05 23:25:14
239
原创 Handler 中的 handleMessage 所在线程是由什么决定的?
大多数情况下,handleMessage所在线程和 handler 初始化所在的线程相同,但 handler 初始化的时候可以传入一个 Looper 对象,此时handleMessage所在线程和参数looper所在线程相同。1. 含参构造public Handler(Looper looper)class MainActivity : AppCompatActivity() { va...
2020-03-30 17:08:43
1007
原创 keep-alive时watch路由route引起的问题用activated解决
不添加keep-alive每次进入页面都会重新渲染页面,添加了keep-alive后只渲染一次。但是有个小问题:动态路由的参数改变后,还是加载以前的页面,created中的数据请求不执行。此时如果在watch中监听$route是可以的,如果监听到 route 参数变了就重新请求数据(created 中的函数)。上面方法可以解决,但是由于页面是 keep-alive 的,所以只要路由变了(如...
2020-01-16 17:16:27
2496
1
原创 RxJava2和Retrofit2配合使用详解
不讲 rxjava 和 retrofit 而是直接上手 2 了,因为 2 封装的更好用的更多。1. 观察者模式常见的 button 点击事件为例,button 是被观察者,listener 是观察者,setOnClickListener 过程是订阅,有了订阅关系后在 button 被点击的时候,监听者 listener 就可以响应事件。这里的button.setOnClickListener...
2019-09-29 14:12:59
941
原创 像svn一样使用Git
用惯了 svn 的人,使用 Git 的时候,pull 命令可能会提示下面错误:Git Pull FailedYour local changes would be overwritten by merge. Commit, stash or revert them to proceed. View them意思是说你本地改了一些东西,拉代码时有冲突,需要解决这些。如果此时你提交本地的...
2019-09-23 11:31:46
1126
原创 mpvue + Vant Weapp 开发小程序之 van-search
提示:不知道怎么配置环境的请先看第一篇的介绍:点击这里1. 引入"usingComponents": { "van-search": "/path/vant-weapp/search/index" }2. 使用<div> <van-search :value="val" placeholder="please input sear...
2019-09-20 14:26:07
4853
原创 mpvue + Vant Weapp 开发小程序之 van-datetime-picker 和 van-popup
不知道怎么配置环境的请先看第一篇的介绍:点击这里1.引入"usingComponents": { "van-popup": "/path/vant-weapp/popup/index", "van-datetime-picker": "/path/vant-weapp/datetime-picker/index" }2.使用van-popup默认从中间弹出,po...
2019-09-16 10:06:30
4579
1
原创 mpvue + Vant Weapp 开发小程序之 van-checkbox 和 van-checkbox-group
声明:我的文章很详(luo)细(suo),适合基础特别差的人看。1.引入首先,安装Vant Weapp:#根目录下打开命令提示符# 通过 npm 安装npm i vant-weapp -S --production# 通过 yarn 安装yarn add vant-weapp --production然后,在app.json中这样引入:"usingComponents":...
2019-09-10 17:10:16
11198
2
原创 Dagger2 中的 Binds、IntoSet、IntoMap
1.@Binds使用@Inject初始化对象时有一种特殊情况:需要初始化的是接口的实例,这时候需要特殊处理一下,就需要用到@Binds@Moduleinterface IMainViewModule { @Binds abstract fun provideIMainView(main: IMainViewImpl): IMainView}这里使用 provideXXX...
2019-05-30 16:53:59
3750
2
原创 Android 水印相机开发
水印相机是自定义相机的一种,实现方法有很多,我看了很多别人的做的很漂亮,我做的就很普通了,不过总算是实现了拍照加水印的功能。我这边用到了SurfaceView,有人没用这个也做出来水印相机,个人觉得还是SurfaceView更方便一点(不接受反驳)。先看看效果:原图太大,我做了压缩,所以动图显得模糊。第一步,我们想一进入就打开相机预览,这个怎么做呢?相机功能由android.hardw...
2019-03-08 16:57:46
4131
4
原创 Dagger2 中使用 AndroidInjection 优化注入流程
每个 Activity 如果都需要手动inject(this)有点繁琐,com.google.dagger:dagger-android中包含AndroidInjection类可以优化注册。1.在 BaseActivity 中注册abstract class BaseActivity:AppCompatActivity() { override fun onCreate(savedIn...
2019-01-11 14:57:46
2911
原创 AndroidStudio 和 EclipseADT 创建项目时的 aidl 通信
Eclipse 用的人不多,在使用 aidl 实现进程间通信的时候,studio 和 eclipse 还是有点儿区别的。比如现在我们要实现一个求和功能,client 只负责输入,service 负责计算功能。client 界面:1.使用 Eclipse 编写 Service 代码service 目录结构:Calculate.aidl:package com.demo.aidl;i...
2018-12-29 17:34:44
421
原创 线形布局下的layout_weight(比重)属性
在布局文件中设置layout_weight(比重)属性时,以宽为例,假如 android:layout_width="wrap_content",或者 android:layout_width="0dp",此时,设置的layout_weight属性和数值成正比;假如 android:layout_width="match_parent",此时,设置的layout_weight属性和数值成反比。具...
2018-11-22 09:42:27
1183
原创 Dagger2 中的 SubComponent
两个 Component 之间除了 dependencies 依赖方式以外,还可以使用 SubComponent 方式。比如说 SeeComponent 想要依赖 AnimalComponent,我们可以这样操作:第一步,在 SeeComponent 中使用@SubComponent注解:@Subcomponentinterface SeeComponent { fun inject...
2018-11-20 16:05:28
569
原创 Dagger2 中的 Scope、dependencies
Scope中文意思是范围,Dagger2 中的@Singleton是 Scope 的一种默认实现,点进去可以看到:@Scope@Documented@Retention(RUNTIME)public @interface Singleton {}上面是 Java 方式,如果我们自定义一个 Scope 就很简单了(kotlin 语言):@Documented@Scope@Reten...
2018-11-20 16:04:42
550
原创 Dagger2 中的 Qualifier
Dagger2 中创建实例对象有两种方式:Inject 维度:通过用 Inject 注解构造函数Module 维度:通过工厂模式的 Module 创建其中,Module 的优先级比 Inject 高。基于同样维度的不同实例,比如@Inject A(){}和@Inject A(B b){},系统就会抱错,这种情况叫做依赖注入迷失。Qualifier限定符 就是解决依赖注入迷失的。1....
2018-11-16 15:43:41
561
原创 安卓原生和 H5 交互
1.安卓调用 H5 的方法:mWebView.loadUrl("javascript:webViewNotice(" + "'" + messageNum + "'" + ")");其中,webViewNotice 是方法名,messageNum 是原生传给 H5 的参数。安全起见,mWebView 最好判空一下。2.H5调用安卓原生的方法:WebSettings se...
2018-07-17 16:11:40
556
原创 两种方式处理ViewPager点击事件
我们知道,ViewPager 没有点击事件,许多时候,需要设置点击事件,比如轮询广告点击事件,这时候怎么处理呢?我总结了两种方式:对 ViewPager 的每个页面设置点击事件通过onTouch()方法处理下面分别说明一下:(一)对 ViewPager 的每个页面设置点击事件比如这种广告轮询,如果想要点击进入,就要给详情页面传入一个id,详情页通过网址+id(比如www.xxxxx/id)访问
2017-03-21 18:43:28
25559
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人