kotlin入门学习(一)

1.基础类型

基础类型,比如ineger,float,character和boolean依旧存在,但是在kotlin里这些基础类型都对象化了。这些基础类型都和java里的基础类型表现的很相似,但是也有不同之处。

第一个就是这些基础类型不会再智能转换,比如,你不能把一个Int值定义为Double类型的变量,java中就可以。至于为什么不能这么做呢,接下来会说到。一切类型的定义都要很精确,比如:

阅读全文

常用的网站和工具

1.设计类:

图片

https://unsplash.com/ 每天10张图片

阅读全文

android videoview使用总结

1.seekTo()的使用

有一个重新进入跳转到上次播放视频地方的需求,其实就是记住播放位置,重新进入时直接在对应位置播放。
seekTo()方法播放网络视频是有一定延时的,所以要在视频缓冲好后才进行播放

1
2
3
4
5
6
7
8
9
10
11
12
13
14
videoView.seekTo(position);
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {

mp.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {
@Override
public void onSeekComplete(MediaPlayer mp) {
videoView.start();
}
});

}
});

阅读全文

Retrofit使用小结

一.简介与安装

在gradle的依赖里加入以下语句:

1
2
3
4
5
compile 'com.squareup.retrofit2:retrofit:2.1.0'  
compile 'com.squareup.retrofit2:adapter-rxjava'
compile 'com.squareup.retrofit2:converter-gson'
compile 'com.squareup.okhttp3:okhttp:3.5.0'
testCompile 'com.squareup.okhttp3:mockwebserver:3.5.0'

阅读全文

2017年的小行动

接下来要开始更新博客了,算是对自己的去年和今年的总结,同时把自己学习过程中的一些麻烦与解决方法记录下里,避免再次陷坑。自己也粗心,希望能通过记录的方式让自己不是那么健忘吧。

生活

继续断舍离

吉他继续练习,不落下

每周还是去跑4次步,雾霾天除外

一周一篇博客,记录下自己的生活

android相关

Retrofit

RxJava

自定义View

前端

React Native学习的过程

Vuejs完成自己的博客搭建

阅读全文

极简生活

极简生活

欲望极简

了解自己的真实欲望,不盲从,不跟风。

把精力全部用在自己最迫切的欲望上,

如提升专业素养、关心朋友、追求美食。

精神极简

专注于一两项自己真正想从事的精神活动,

阅读全文

android-IntentService学习

1.打开Android Studio(AS),新建一个IntentService,AS会自动帮你创建如下的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93

/**
* 开启一个子线程来运行服务,来处理异步的任务请求
* An {@link IntentService} subclass for handling asynchronous task requests in
* a service on a separate handler thread.
* <p/>
*/
public class TestIntentService extends IntentService {
// TODO: Rename actions, choose action names that describe tasks that this
// IntentService can perform, e.g. ACTION_FETCH_NEW_ITEMS
private static final String ACTION_DOWNLOAD = "com.mywjch.learnrxjava.action.FOO";
private static final String ACTION_BAZ = "com.mywjch.learnrxjava.action.BAZ";
// TODO: Rename parameters
private static final String EXTRA_PARAM1 = "com.mywjch.learnrxjava.extra.PARAM1";
private static final String EXTRA_PARAM2 = "com.mywjch.learnrxjava.extra.PARAM2";
/**
* 这是一个帮助方法,你调用这个方法时,会使用ACTION_DOWNLOAD这个Action来启动服务来执行它,
* 如果服务已经在运行,并且在执行其他任务了,那么就会把这个Action放进队列,接下来执行.
* Starts this service to perform action Foo with the given parameters. If
* the service is already performing a task this action will be queued.
*/
// TODO: Customize helper method
public static void startActionDownload(Context context, String param1, String param2) {
Intent intent = new Intent(context, TestIntentService.class);
intent.setAction(ACTION_DOWNLOAD);
//把传进来的参数放进Intent,进行处理
intent.putExtra(EXTRA_PARAM1, param1);
intent.putExtra(EXTRA_PARAM2, param2);
//启动服务
context.startService(intent);
}
/**
* 与上面类似
* Starts this service to perform action Baz with the given parameters. If
* the service is already performing a task this action will be queued.
*/
// TODO: Customize helper method
public static void startActionBaz(Context context, String param1, String param2) {
Intent intent = new Intent(context, TestIntentService.class);
intent.setAction(ACTION_BAZ);
intent.putExtra(EXTRA_PARAM1, param1);
intent.putExtra(EXTRA_PARAM2, param2);
context.startService(intent);
}
public TestIntentService() {
super("TestIntentService");
}
/**
* 在IntentService的实现会回调onHandleIntent方法
*/
@Override
protected void onHandleIntent(Intent intent) {
if (intent != null) {
final String action = intent.getAction();
//这里判断是哪一个Action
if (ACTION_DOWNLOAD.equals(action)) {
final String param1 = intent.getStringExtra(EXTRA_PARAM1);
final String param2 = intent.getStringExtra(EXTRA_PARAM2);
//然后直接随便调用个方法就可以了
suibiandiaoyonggefangfa(param1, param2);
} else if (ACTION_BAZ.equals(action)) {
final String param1 = intent.getStringExtra(EXTRA_PARAM1);
final String param2 = intent.getStringExtra(EXTRA_PARAM2);
handleActionBaz(param1, param2);
}
}
}
/**
*会在backgroung线程里处理这个方法
*/
private void suibiandiaoyonggefangfa(String param1, String param2) {
// TODO: 这里来实现这个方法就可以了
Thread.sleep(3000);
//然后发广播返回处理结果
Intent intent =new Intent(HandlerActivity.UPLOAD_RESULT);
intent.putExtra(ACTION_PATH, path);
sendBroadcast(intent);
}
/**
* Handle action Baz in the provided background thread with the provided
* parameters.
*/
private void handleActionBaz(String param1, String param2) {
// TODO: Handle action Baz
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void onDestroy() {
super.onDestroy();
//队列中的任务完成后IntentService底层会直接调用stopSelf(msg.arg1);来关闭自己
Log.e("TAG","OnDeatory");
}
}

阅读全文

Android Download Manager学习

一.Download Manager是做什么的:

Android2.3(API level9)引入了Download Manager,作为一个service来优化长时间下载操作的处理.

二.什么场景可以使用:

三.怎么使用:

1.获取:

DownloadManager downloadManager = Context.getSystemService(Context.DOWNLOAD_SERVICE);

阅读全文

git学习

基本概念:

查看对象类型

git log –pretty=raw –graph e672332

打印提交对象之间的互相关联的跟踪链,–pragh显示parent属性,没有parent即为起点

阅读全文

你的知识需要管理-读书笔记

第一节.你的知识问题

开头的话深深的觉得说的很对

“现在,所谓无知不是指没有知识,而是不会展示自己的知识、不会发挥知识的价值、
不会发现新知识、不会学习新知识,也不去创造知识。
对于主要靠知识谋生的知识工作者而言,你的知识管理过程是否运转自如,

阅读全文