人生如果错了方向,停止就是进步。
过程等有时间在来补充…
参考:
用心甘情愿的态度,去过随遇而安的生活。
人生如果错了方向,停止就是进步。
一:动态从服务器获有时效性的key,失效的时候再去请求,这种额外增加了请求次数还要处理key失效的情况,如果用抓包软件还是可以破解key,相对来说不是太理想。
二:将私有的key通过native方法获取,打包后在so文件里面。但别人可以反编译代码,将你的so文件加载到自己代码里面,然后通过你的native方法去获取key,所以这边要解决下自己的so防止别人使用。
解决这个就是在native那边验证签名,不是自己签名不返回key,还可以让程序崩溃。这样基本上可以确保key的安全。
1 | static bool checkSignature = false; |
人生如果错了方向,停止就是进步。
EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。比如请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过EventBus实现。
作为一个消息总线,有三个主要的元素:
1.定义Event: 1
public class MessageEvent { /* Additional fields if needed */ }
如果你简单,这个世界就对你简单。
官方说明JavaPoet is a Java API for generating .java source files.
原由是看到了butterknife框架,里面用的是RetentionPolicy.CLASS,编译的时候通过注解实现框架的功能,比RetentionPolicy.RUNNTIME再通过反射实现效率高。
然后就去看RetentionPolicy.CLASS的实现原理,需要注解处理器(Annotation Processor),最后就一步步的看到了javapoet,自动生成java代码。
扯远了,直接记录过程吧。
我是通过eclipse maven自动下载jar的。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18public static void main(String[] args) throws IOException {
MethodSpec main = MethodSpec
.methodBuilder("main")
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.returns(void.class)
.addParameter(String[].class, "args")
.addStatement("$T.out.println($S)", System.class, "Hello, JavaPoet!").build();
TypeSpec helloWorld = TypeSpec.classBuilder("HelloWorld")
.addModifiers(Modifier.PUBLIC, Modifier.FINAL).addMethod(main)
.build();
JavaFile javaFile = JavaFile.builder("com.zlc.javapoet",
helloWorld).build();
// 写入src目录下面
String path = System.getProperty("user.dir") + "/src";
javaFile.writeTo(new File(path));
}
人生如果错了方向,停止就是进步。
RxJava Github基本用法都可以查考文档。
1 | Observable<String> myObservaable = Observable.create(new Observable.OnSubscribe<String>() { |
人生一条路,走自己的路,
人生两个好,身体好,心情好
好好珍惜每一天!
公司的App里面需要添加个发送小视频功能,需要尽快搞出来,直接让模仿微信的小视频。查资料得出:
1 | - (IBAction)recordBegin:(id)sender { |
不闻不问不一定是忘记了,但一定是疏远了,彼此沉默太久就连主动的都需要勇气。
定义一个子类继承UIScrollView,重写- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer方法,做些判断就可以达达这效果。
目前我只做了向右滑动,菜单在左侧的冲突,右边依此类推很容易解决。以下Menu在左侧的解决方法:
一件事情,对你伤害的程度与事情本身没有任何关系,取决于你对这件事情的态度。
aop的实现我目前了解的有两种,一种是通过动态代理(实现InvocationHandler接口或者用第三方cglib库,两者区别这就不介绍了),另一种是aspectJ。aspectJ基本环境搭建,首先eclipse安装插件,aspect基本用法可以参考官方官方文档
1.创建基本的main入口 1
2
3
4
5
6
7
8
9
10package com.zlc.aj;
public class Test {
public void sayHello() {
System.out.println("Hello");
}
public static void main(String[] args) {
Test t = new Test();
t.sayHello();
}
}
app流量统计 http://keepcleargas.bitbucket.org/2013/10/12/android-App-Traffic.html
mvc mvp mvvm (http://www.tuicool.com/articles/FrAJ3qv)
RACSubject
RxJava 与 Retrofit 结合的最佳实践 http://gank.io/post/56e80c2c677659311bed9841
android学习过程 http://hukai.me/android-training-course-in-chinese/testing/activity-testing/prepare-activity-testing.html
BuildConfig.DEBUG 和 android:debuggable=”true” tools:ignore=”HardcodedDebugMode”
https://github.com/tbruyelle/RxPermissions
https://github.com/anthonycr/Grant
https://github.com/hotchemi/PermissionsDispatcher
* IBM 技术分享http://www.ibm.com/developerworks/cn/java/j-lo-proxy1/
* http://hannesdorfmann.com/annotation-processing/annotationprocessing101
* http://alighters.com/blog/2016/05/02/rxjava-plus-retrofitshi-xian-wang-luo-dai-li/ token失效处理
人生一条路,走自己的路,
人生两个好,身体好,心情好
好好珍惜每一天!
先看效果
1 | <android.support.v4.widget.SlidingPaneLayout xmlns:android="http://schemas.android.com/apk/res/android" |
人生一条路,走自己的路,
人生两个好,身体好,心情好
好好珍惜每一天!
先看效果
1 | <?xml version="1.0" encoding="utf-8"?>" |