-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
1006 lines (717 loc) · 38.2 KB
/
Copy pathindex.html
File metadata and controls
1006 lines (717 loc) · 38.2 KB
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!doctype html>
<html lang="zh-CN">
<head><meta name="generator" content="Hexo 3.9.0">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8">
<meta name="baidu-site-verification" content="dIcXMeY8Ya">
<title>`Android`分类下的文章 | 网记本</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
<meta name="keywords" content="freefuncode, huangguangzhi, Android, Kotlin, 网络记事本, 网记本, inote.fun">
<meta name="description" content="FreeFunCode网络记事本">
<link rel="alternative" href="/atom.xml" title="网记本" type="application/atom+xml">
<link rel="shortcut icon" href="/img/favicon.ico">
<link rel="stylesheet" href="/css/style.css">
<!--[if lt IE 9]>
<script src="/js/html5.js"></script>
<![endif]-->
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "//hm.baidu.com/hm.js?3771b2566860fea0de20c35742671f53";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</head>
</html>
<body class="home">
<!--[if lt IE 9]>
<div class="browsehappy">
当前网页 <strong>不支持</strong>
你正在使用的浏览器. 为了正常的访问, 请 <a href="http://browsehappy.com/">升级你的浏览器</a>.
</div>
<![endif]-->
<!-- 博客头部 -->
<header class="header">
<section class="container header-main">
<div class="logo">
<a href="/">
<div class="cover">
<span class="name">网记本</span>
<span class="description">网络记事本-huangguangzhi</span>
</div>
</a>
</div>
<div class="dropnav icon-paragraph-justify" id="JELON__btnDropNav"></div>
<ul class="menu hidden" id="JELON__menu">
<li rel="/categories/Android/index.html" class="item ">
<a href="/" title="日志" class="icon-home"> 日志</a>
</li>
<li rel="/categories/Android/index.html" class="item ">
<a href="/photos/" title="相册" class="icon-files-empty"> 相册</a>
</li>
<li rel="/categories/Android/index.html" class="item ">
<a href="/lab/" title="建站" class="icon-office"> 建站</a>
</li>
<li rel="/categories/Android/index.html" class="item ">
<a href="/about/" title="关于" class="icon-profile"> 关于</a>
</li>
<li rel="/categories/Android/index.html" class="item ">
<a href="/comment/" title="留言" class="icon-comment"> 留言</a>
</li>
</ul>
<div class="profile clearfix">
<div class="feeds fl">
<p class="links">
<a href="" target="_blank">good good study ,day day up!</a>
|
<a href="" target="_blank">利用碎片化时间挖掘知识深度!</a>
</p>
<p class="sns">
<a href="https://juejin.im/user/5ceb7d54f265da1b8466c2f5/posts" class="juejin" target="_blank"><b>■</b> 稀土掘金</a>
<a href="https://weibo.com/230689567" class="sinaweibo" target="_blank"><b>■</b> 新浪微博</a>
<a href="javascript: void(0);" class="wechat">
<b>■</b>
公众号
<span class="popover">
<img src="/img/wechat_mp.jpg" width="120" height="120" alt="我的微信订阅号">
<i class="arrow"></i>
</span>
</a>
</p>
</div>
<div class="avatar fr">
<img src="/img/user.png" alt="avatar" title="FreeFunCode" >
</div>
</div>
</section>
</header>
<!-- 博客正文 -->
<div class="container body clearfix">
<section class="content">
<div class="content-main widget">
<!-- 文章分类 -->
<h3 class="widget-hd">
<strong>
`Android`分类下的文章
</strong>
</h3>
<!-- 文章列表 item -->
<article class="post">
<header>
<!-- 标签这有且只能显示一个 -->
<a class="cat-link" href="/categories/Android/">Android</a>
<!-- 文章标题 -->
<h3 class="post-title">
<a href="https://inote.fun/2020/02/21/Android-8-servicee保活实现/">
Android O service保活方案(startForeground&notification)
</a>
</h3>
</header>
<p class="post-meta">
huangguangzhi 发表于
<time datetime="2020-02-21T08:00:30.000Z">2020-02-21</time>
<span class="post-tags">
标签:
<a href="/tags/service保活/" title="service保活">service保活</a>
</span>
</p>
<div class="post-content">
<div class="post-excerpt">
<h1 id="Android-O-service保活方案(startForeground-amp-notification)"><a href="#Android-O-service保活方案(startForeground-amp-notification)" class="headerlink" title="Android O service保活方案(startForeground & notification)"></a>Android O service保活方案(startForeground & notification)</h1><h3 id="一-问题"><a href="#一-问题" class="headerlink" title="一.问题"></a>一.问题</h3><h4 id="问题:从android-O版本开始,google为了控制资源使用,对service后台服务做了限制。"><a href="#问题:从android-O版本开始,google为了控制资源使用,对service后台服务做了限制。" class="headerlink" title="问题:从android O版本开始,google为了控制资源使用,对service后台服务做了限制。"></a>问题:从android O版本开始,google为了控制资源使用,对service后台服务做了限制。</h4>
<p class="more">
<a href="https://inote.fun/2020/02/21/Android-8-servicee保活实现/">阅读剩下更多</a>
</p>
</div>
<div class="post-thumbnail" data-img="">
<!--
<a href="https://inote.fun/2020/02/21/Android-8-servicee保活实现/" title="Android O service保活方案(startForeground&notification)">
<img class="thumbnail" src="/img/default.png" data-echo="/[object Object]thumbnail/1.jpg" alt="默认配图" >
</a>
-->
</div>
</div>
</article>
<!-- 文章列表 item -->
<article class="post">
<header>
<!-- 标签这有且只能显示一个 -->
<a class="cat-link" href="/categories/Android/">Android</a>
<!-- 文章标题 -->
<h3 class="post-title">
<a href="https://inote.fun/2019/11/14/踩坑-极光推送JPush自定义提示音/">
踩坑:极光推送JPush自定义提示音
</a>
</h3>
</header>
<p class="post-meta">
huangguangzhi 发表于
<time datetime="2019-11-14T01:31:05.000Z">2019-11-14</time>
<span class="post-tags">
标签:
<a href="/tags/JPush/" title="JPush">JPush</a>
</span>
</p>
<div class="post-content">
<div class="post-excerpt">
<h5 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h5><p><a href="http://docs.jiguang.cn/jpush/client/Android/android_3m/" target="_blank" rel="noopener">3 分钟快速使用 JPush Android Demo</a></p>
<p><a href="https://www.jiguang.cn/jpush2/#/app/d56d184d10358b1a12fd7d7d/push_form/custom" target="_blank" rel="noopener">选择应用,发送自定义消息</a></p>
<p>项目引入JPush:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">api 'cn.jiguang.sdk:jpush:3.3.4'</span><br><span class="line">api 'cn.jiguang.sdk:jcore:2.1.2'</span><br></pre></td></tr></table></figure>
<p class="more">
<a href="https://inote.fun/2019/11/14/踩坑-极光推送JPush自定义提示音/">阅读剩下更多</a>
</p>
</div>
<div class="post-thumbnail" data-img="">
<!--
<a href="https://inote.fun/2019/11/14/踩坑-极光推送JPush自定义提示音/" title="踩坑:极光推送JPush自定义提示音">
<img class="thumbnail" src="/img/default.png" data-echo="/[object Object]thumbnail/4.jpg" alt="默认配图" >
</a>
-->
</div>
</div>
</article>
<!-- 文章列表 item -->
<article class="post">
<header>
<!-- 标签这有且只能显示一个 -->
<a class="cat-link" href="/categories/Android/">Android</a>
<!-- 文章标题 -->
<h3 class="post-title">
<a href="https://inote.fun/2019/10/26/kotlin之Lambda表达式/">
kotlin之Lambda表达式
</a>
</h3>
</header>
<p class="post-meta">
huangguangzhi 发表于
<time datetime="2019-10-25T17:01:49.000Z">2019-10-26</time>
<span class="post-tags">
标签:
<a href="/tags/kotlin/" title="kotlin">kotlin</a>
</span>
</p>
<div class="post-content">
<div class="post-excerpt">
<h1 id="kotlin之Lambda表达式"><a href="#kotlin之Lambda表达式" class="headerlink" title="kotlin之Lambda表达式"></a>kotlin之Lambda表达式</h1><blockquote>
<p> Java8中引入,匿名函数。</p>
<p> 普通的Lambda表达式类似对应kotlin普通函数的声明,而带接收者的lambda表达式则类似对应kotlin的扩展函数。</p>
</blockquote>
<h5 id="lambda的基本语法"><a href="#lambda的基本语法" class="headerlink" title="lambda的基本语法"></a>lambda的基本语法</h5><p><code>{ variable -> body_of_function}</code> 示例:<code>{ x:Int, y:Int -> x + y }</code></p>
<p>lambda表达式始终用花括号包围,实参并没有用括号括起来。箭头把实参列表和lambda的函数体隔开</p>
<p class="more">
<a href="https://inote.fun/2019/10/26/kotlin之Lambda表达式/">阅读剩下更多</a>
</p>
</div>
<div class="post-thumbnail" data-img="">
<!--
<a href="https://inote.fun/2019/10/26/kotlin之Lambda表达式/" title="kotlin之Lambda表达式">
<img class="thumbnail" src="/img/default.png" data-echo="/[object Object]thumbnail/6.jpg" alt="默认配图" >
</a>
-->
</div>
</div>
</article>
<!-- 文章列表 item -->
<article class="post">
<header>
<!-- 标签这有且只能显示一个 -->
<a class="cat-link" href="/categories/Android/">Android</a>
<!-- 文章标题 -->
<h3 class="post-title">
<a href="https://inote.fun/2019/10/19/Android-kotlin-coroutine协程的概念/">
Android-kotlin-coroutine协程的概念
</a>
</h3>
</header>
<p class="post-meta">
huangguangzhi 发表于
<time datetime="2019-10-19T08:40:15.000Z">2019-10-19</time>
<span class="post-tags">
标签:
<a href="/tags/coroutine协程/" title="coroutine协程">coroutine协程</a>
</span>
</p>
<div class="post-content">
<div class="post-excerpt">
<h1 id="Android-kotlin-coroutine协程的概念"><a href="#Android-kotlin-coroutine协程的概念" class="headerlink" title="Android-kotlin-coroutine协程的概念"></a>Android-kotlin-coroutine协程的概念</h1><h4 id="一-进程,线程,协程-概念"><a href="#一-进程,线程,协程-概念" class="headerlink" title="一. 进程,线程,协程 概念"></a>一. 进程,线程,协程 概念</h4><h5 id="进程与线程"><a href="#进程与线程" class="headerlink" title="进程与线程"></a>进程与线程</h5><ul>
<li><p>进程是资源分配的最小单位,线程是程序执行的最小单位。</p>
</li>
<li><p>进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。</p>
<blockquote>
<p>为了加大一个应用可使用的内存通过多进程来获取多份内存空间<br>通过给四大组件指定android:process属性可以轻易开启多进程</p>
</blockquote>
</li>
<li><p>线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC-跨进程通信)进行。不过如何处理好同步与互斥是编写多线程程序的难点。</p>
<blockquote>
<p>跨进程通信方式有:</p>
<p> 1. 通过Intent(Bundle)附加extras来传递信息</p>
<p> 2. 通过共享文件来共享数据</p>
<p> 3. 采用Binder方式来是想跨进程通信</p>
<p> 4. 采用ContentProvider</p>
<p> 5. 采用socket</p>
</blockquote>
</li>
<li><p>但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。</p>
<blockquote>
<p>延申到android崩溃同样道理。</p>
<p>app中大量Web页面的使用容易导致App内存占用巨大,存在内存泄露,崩溃率高等问题,WebView独立进程的使用是解决Android WebView相关问题的一个合理的方案。</p>
</blockquote>
</li>
</ul>
<p><img src="/images/%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B.jpg" alt="进程与线程"></p>
<p class="more">
<a href="https://inote.fun/2019/10/19/Android-kotlin-coroutine协程的概念/">阅读剩下更多</a>
</p>
</div>
<div class="post-thumbnail" data-img="">
<!--
<a href="https://inote.fun/2019/10/19/Android-kotlin-coroutine协程的概念/" title="Android-kotlin-coroutine协程的概念">
<img class="thumbnail" src="/img/default.png" data-echo="/[object Object]thumbnail/9.jpg" alt="默认配图" >
</a>
-->
</div>
</div>
</article>
<!-- 文章列表 item -->
<article class="post">
<header>
<!-- 标签这有且只能显示一个 -->
<a class="cat-link" href="/categories/Android/">Android</a>
<!-- 文章标题 -->
<h3 class="post-title">
<a href="https://inote.fun/2019/10/19/Android子线程切换到UI线程方法总结/">
Android子线程切换到UI线程方法总结
</a>
</h3>
</header>
<p class="post-meta">
huangguangzhi 发表于
<time datetime="2019-10-19T05:10:59.000Z">2019-10-19</time>
<span class="post-tags">
标签:
<a href="/tags/线程切换/" title="线程切换">线程切换</a>
</span>
</p>
<div class="post-content">
<div class="post-excerpt">
<h4 id="线程切换"><a href="#线程切换" class="headerlink" title="线程切换"></a>线程切换</h4><blockquote>
<p>通过消息发送(发布)和接收(订阅)的方式切换的。</p>
</blockquote>
<h5 id="1-Handler"><a href="#1-Handler" class="headerlink" title="1 .Handler"></a>1 .Handler</h5><blockquote>
<p>子线程(非UI线程)调用handler对象sendMessage(msg)方法,将消息发送给关联Looper,Looper将消息存储在MessageQueue消息队列里面。</p>
<p>然后轮巡取出MessageQueue中的消息给UI线程中handler处理,handler得到消息调用handleMessage方法处理消息,从而可以更新Ui。</p>
</blockquote>
<p class="more">
<a href="https://inote.fun/2019/10/19/Android子线程切换到UI线程方法总结/">阅读剩下更多</a>
</p>
</div>
<div class="post-thumbnail" data-img="">
<!--
<a href="https://inote.fun/2019/10/19/Android子线程切换到UI线程方法总结/" title="Android子线程切换到UI线程方法总结">
<img class="thumbnail" src="/img/default.png" data-echo="/[object Object]thumbnail/9.jpg" alt="默认配图" >
</a>
-->
</div>
</div>
</article>
<!-- 文章列表 item -->
<article class="post">
<header>
<!-- 标签这有且只能显示一个 -->
<a class="cat-link" href="/categories/Android/">Android</a>
<!-- 文章标题 -->
<h3 class="post-title">
<a href="https://inote.fun/2019/10/07/bsdiff和bspatch增量更新概念介绍/">
bsdiff&bspatch增量更新概念介绍
</a>
</h3>
</header>
<p class="post-meta">
huangguangzhi 发表于
<time datetime="2019-10-07T02:22:16.000Z">2019-10-07</time>
<span class="post-tags">
标签:
<a href="/tags/增量更新/" title="增量更新">增量更新</a>
</span>
</p>
<div class="post-content">
<div class="post-excerpt">
<blockquote>
<p>随着Android生态,技术越来越成熟,目前市场很多Android的项目工程很大,团队人数多,慢慢衍生出了许多组件化插件化技术。<br>同时也因为Android安装包apk也在逐渐增大,每次发布,用户更新apk环境复杂,如果全量更新下载apk的话在使用流量情况下,网络环境不好等等,对于用户体验是非常不好的。</p>
</blockquote>
<h4 id="首先区分下几个概念"><a href="#首先区分下几个概念" class="headerlink" title="首先区分下几个概念"></a>首先区分下几个概念</h4><p><strong>组件化</strong> : 把常用的模块代码,抽取lib工程或者jar达到复用的效果。<br><strong>插件化</strong>:目的是把需要实现的模块或功能当做一个独立的提取出来,减少宿主的规模,当需要使用到相应的功能时再去加载相应的模块。涉及动态代理,ClassLoader,以及另一个apk资源的加载。例如:360的DroidPlugin (推荐)<br><strong>热修复</strong>:往往是从修复bug的角度出发,强调的是在不需要二次安装应用的前提下修复已知的bug(涉及关键词:Hook技术、动态代理等)。例如:阿里 AndFix。<br><strong>增量更新</strong>:APK增量更新是很多大厂APP采用的技术。bsdiff库生成补丁文件方式下载跟旧版本APK合成生成新版APK的原理(ligbspatch.so)。手机游戏app增量更新使用较多。例如:<a href="https://github.com/cundong/SmartAppUpdates" target="_blank" rel="noopener">SmartAppUpdates</a></p>
<p class="more">
<a href="https://inote.fun/2019/10/07/bsdiff和bspatch增量更新概念介绍/">阅读剩下更多</a>
</p>
</div>
<div class="post-thumbnail" data-img="">
<!--
<a href="https://inote.fun/2019/10/07/bsdiff和bspatch增量更新概念介绍/" title="bsdiff&bspatch增量更新概念介绍">
<img class="thumbnail" src="/img/default.png" data-echo="/[object Object]thumbnail/7.jpg" alt="默认配图" >
</a>
-->
</div>
</div>
</article>
<!-- 文章列表 item -->
<article class="post">
<header>
<!-- 标签这有且只能显示一个 -->
<a class="cat-link" href="/categories/Android/">Android</a>
<!-- 文章标题 -->
<h3 class="post-title">
<a href="https://inote.fun/2019/10/03/AndroidView绘制流程/">
Android View绘制流程
</a>
</h3>
</header>
<p class="post-meta">
huangguangzhi 发表于
<time datetime="2019-10-03T04:18:40.000Z">2019-10-03</time>
<span class="post-tags">
标签:
<a href="/tags/view绘制/" title="view绘制">view绘制</a>
</span>
</p>
<div class="post-content">
<div class="post-excerpt">
<h1 id="Android-View绘制流程"><a href="#Android-View绘制流程" class="headerlink" title="Android View绘制流程"></a>Android View绘制流程</h1><blockquote>
<p>Android绘制经历了三个步骤:</p>
<ul>
<li>1.Measure 测量View大小</li>
<li>2.layout 计算摆放位置</li>
<li>3.draw 画View</li>
</ul>
</blockquote>
<p class="more">
<a href="https://inote.fun/2019/10/03/AndroidView绘制流程/">阅读剩下更多</a>
</p>
</div>
<div class="post-thumbnail" data-img="">
<!--
<a href="https://inote.fun/2019/10/03/AndroidView绘制流程/" title="Android View绘制流程">
<img class="thumbnail" src="/img/default.png" data-echo="/[object Object]thumbnail/3.jpg" alt="默认配图" >
</a>
-->
</div>
</div>
</article>
<!-- 文章列表 item -->
<article class="post">
<header>
<!-- 标签这有且只能显示一个 -->
<a class="cat-link" href="/categories/Android/">Android</a>
<!-- 文章标题 -->
<h3 class="post-title">
<a href="https://inote.fun/2019/10/03/Android屏幕适配/">
Android屏幕适配
</a>
</h3>
</header>
<p class="post-meta">
huangguangzhi 发表于
<time datetime="2019-10-03T01:07:38.000Z">2019-10-03</time>
<span class="post-tags">
标签:
<a href="/tags/屏幕适配/" title="屏幕适配">屏幕适配</a>
</span>
</p>
<div class="post-content">
<div class="post-excerpt">
<h1 id="Android屏幕适配方案"><a href="#Android屏幕适配方案" class="headerlink" title="Android屏幕适配方案"></a>Android屏幕适配方案</h1><blockquote>
<p>先讲述一些屏幕适配相关概念,然后介绍下3种主要的适配方案以及优缺点。</p>
</blockquote>
<h3 id="一-基本概念"><a href="#一-基本概念" class="headerlink" title="一.基本概念"></a>一.基本概念</h3><h4 id="1-像素(px)"><a href="#1-像素(px)" class="headerlink" title="1. 像素(px)"></a>1. 像素(px)</h4><ul>
<li>像素是手机屏幕的最小构成单元。<h4 id="2-分辨率-(px)"><a href="#2-分辨率-(px)" class="headerlink" title="2. 分辨率 (px)"></a>2. 分辨率 (px)</h4></li>
<li>手机在横向、纵向上的像素点数总和,一般描述成 宽高 ,即横向像素点个数纵向像素点个数。</li>
<li>例如:1080x1920,即宽度方向上有1080个像素点,在高度方向上有1920个像素点。<h4 id="3-屏幕尺寸(inch)"><a href="#3-屏幕尺寸(inch)" class="headerlink" title="3.屏幕尺寸(inch)"></a>3.屏幕尺寸(inch)</h4></li>
<li>手机对角线的物理尺寸,单位 英寸(inch),一英寸大约2.54cm,</li>
<li>例如:常见的尺寸有4.7寸、5寸、5.5寸、6寸<h4 id="4-屏幕像素密度-dpi"><a href="#4-屏幕像素密度-dpi" class="headerlink" title="4.屏幕像素密度 (dpi)"></a>4.屏幕像素密度 (dpi)</h4></li>
<li>每英寸长度上像素点个数。”dot per inch”:</li>
<li>例如每英寸内有160个像素点,则其像素密度为160dpi。<h5 id="以上四者之间关系"><a href="#以上四者之间关系" class="headerlink" title="以上四者之间关系"></a>以上四者之间关系</h5></li>
<li>$ √((宽px)²+(高px)²) / (屏幕尺寸inch) = (屏幕像素密度dpi) $ <h4 id="5-dp,dip,sp"><a href="#5-dp,dip,sp" class="headerlink" title="5. dp,dip,sp"></a>5. dp,dip,sp</h4></li>
<li>dip和dp是一个意思,都是Density Independent Pixels的缩写,即密度无关像素。</li>
<li>例如:在Android中,规定以160dpi为基准,1dip=1px,如果密度是320dpi,则1dip=2px,以此类推。</li>
<li>android中的dp在渲染前会将dp转为px,计算公式:<br>$px = density * dp;$<br>$density = dpi / 160;$<br>$px = dp * (dpi / 160);$</li>
<li>注意:dp与px不一定都是2倍的关系,与屏幕像素密度dpi有关。<h4 id="6-hdpi,mdpi,xhdpi,xxhdpi,xxxhdpi"><a href="#6-hdpi,mdpi,xhdpi,xxhdpi,xxxhdpi" class="headerlink" title="6. hdpi,mdpi,xhdpi,xxhdpi,xxxhdpi"></a>6. hdpi,mdpi,xhdpi,xxhdpi,xxxhdpi</h4></li>
<li>用来修饰Android中的drawable文件夹及values文件夹,用来区分不同像素密度下的图片和dimen值。</li>
<li>在设计图标时,对于五种主流的像素密度(mdpi、hdpi、xhdpi、xxhdpi 和 xxxhdpi)应按照 2:3:4:6:8 的比例进行缩放。</li>
</ul>
<p class="more">
<a href="https://inote.fun/2019/10/03/Android屏幕适配/">阅读剩下更多</a>
</p>
</div>
<div class="post-thumbnail" data-img="">
<!--
<a href="https://inote.fun/2019/10/03/Android屏幕适配/" title="Android屏幕适配">
<img class="thumbnail" src="/img/default.png" data-echo="/[object Object]thumbnail/3.jpg" alt="默认配图" >
</a>
-->
</div>
</div>
</article>
<!-- 文章列表 item -->
<article class="post">
<header>
<!-- 标签这有且只能显示一个 -->
<a class="cat-link" href="/categories/Android/">Android</a>
<!-- 文章标题 -->
<h3 class="post-title">
<a href="https://inote.fun/2019/09/28/Kotlin与java对比/">
Kotlin与java对比
</a>
</h3>
</header>
<p class="post-meta">
huangguangzhi 发表于
<time datetime="2019-09-28T09:48:07.000Z">2019-09-28</time>
<span class="post-tags">
标签:
<a href="/tags/kotlin/" title="kotlin">kotlin</a>
</span>
</p>
<div class="post-content">
<div class="post-excerpt">
<p><a href="https://juejin.im/post/5d8f2aa4e51d4577ea077ead" target="_blank" rel="noopener">点击查看原文</a></p>
<h2 id="Kotlin与java对比"><a href="#Kotlin与java对比" class="headerlink" title="Kotlin与java对比"></a>Kotlin与java对比</h2><blockquote>
<p>最近因为工作关系,需要迭代维护公司现有kotlin客服聊天的项目。之前一直使用java,对于kotlin还是比较陌生的。<br>使用kotlin一段时间后,感触还是有点。kotlin比java真是太简洁了,一段代码,刚开始可能按java语法习惯编写,然后根据ide的提示,一步一步优化,缩减代码量,最后发现,代码量的差距很大。最后剩下的代码可能就只剩下了业务逻辑了。<br>kotlin结合mvvm架构,项目非常简洁。<br>kotlin是基于jvm编程语言,同java一样可以编译成class字节码文件。同java之间可以相互调用。</p>
</blockquote>
<p class="more">
<a href="https://inote.fun/2019/09/28/Kotlin与java对比/">阅读剩下更多</a>
</p>
</div>
<div class="post-thumbnail" data-img="">
<!--
<a href="https://inote.fun/2019/09/28/Kotlin与java对比/" title="Kotlin与java对比">
<img class="thumbnail" src="/img/default.png" data-echo="/[object Object]thumbnail/8.jpg" alt="默认配图" >
</a>
-->
</div>
</div>
</article>
<!-- 文章列表 item -->
<article class="post">
<header>
<!-- 标签这有且只能显示一个 -->
<a class="cat-link" href="/categories/Android/">Android</a>
<!-- 文章标题 -->
<h3 class="post-title">
<a href="https://inote.fun/2019/09/04/Android开源框架八注解框架-ButterKnife/">
Android 开源框架 ( 八 ) 注解框架---ButterKnife
</a>
</h3>
</header>
<p class="post-meta">
huangguangzhi 发表于
<time datetime="2019-09-04T12:03:06.000Z">2019-09-04</time>
<span class="post-tags">
标签:
<a href="/tags/开源框架/" title="开源框架">开源框架</a>
</span>
</p>
<div class="post-content">
<div class="post-excerpt">
<p><a href="https://www.cnblogs.com/bugzone/p/ButterKnife.html" target="_blank" rel="noopener">点击查看原文</a></p>
<p class="more">
<a href="https://inote.fun/2019/09/04/Android开源框架八注解框架-ButterKnife/">阅读剩下更多</a>
</p>
</div>
<div class="post-thumbnail" data-img="">
<!--
<a href="https://inote.fun/2019/09/04/Android开源框架八注解框架-ButterKnife/" title="Android 开源框架 ( 八 ) 注解框架---ButterKnife">
<img class="thumbnail" src="/img/default.png" data-echo="/[object Object]thumbnail/4.jpg" alt="默认配图" >
</a>
-->
</div>
</div>
</article>
<nav class="page-navigator">
<span class="page-number current">1</span><a class="page-number" href="/categories/Android/page/2/">2</a><a class="page-number" href="/categories/Android/page/3/">3</a><span class="space">…</span><a class="page-number" href="/categories/Android/page/6/">6</a><a class="extend next" rel="next" href="/categories/Android/page/2/">后一页</a>
</nav>
</div>
</section>
<!-- 侧栏部分 -->
<aside class="sidebar">
<section class="widget">
<h3 class="widget-hd"><strong>文章分类</strong></h3>
<!-- 文章分类 -->
<ul class="widget-bd">
<li>
<a href="/categories/后端/">后端</a>
<span class="badge">(21)</span>
</li>
<li>
<a href="/categories/心情/">心情</a>
<span class="badge">(14)</span>
</li>
<li>
<a href="/categories/后端/CSharp/">CSharp</a>
<span class="badge">(14)</span>
</li>
<li>
<a href="/categories/Android/">Android</a>
<span class="badge">(55)</span>
</li>
<li>
<a href="/categories/Jetpack/">Jetpack</a>
<span class="badge">(7)</span>
</li>
<li>
<a href="/categories/Android/开源框架/">开源框架</a>
<span class="badge">(17)</span>
</li>
<li>
<a href="/categories/Android/安卓源码/">安卓源码</a>
<span class="badge">(15)</span>
</li>
<li>
<a href="/categories/Android/kotlin/">kotlin</a>
<span class="badge">(3)</span>
</li>
<li>
<a href="/categories/Android/知识点/">知识点</a>
<span class="badge">(19)</span>
</li>
<li>
<a href="/categories/GitHub/">GitHub</a>
<span class="badge">(5)</span>
</li>
<li>
<a href="/categories/后端/JAVA/">JAVA</a>
<span class="badge">(1)</span>
</li>
<li>
<a href="/categories/Jetpack/Paging/">Paging</a>
<span class="badge">(1)</span>
</li>
<li>
<a href="/categories/Jetpack/LiveData/">LiveData</a>
<span class="badge">(1)</span>
</li>
<li>
<a href="/categories/Jetpack/Room/">Room</a>
<span class="badge">(1)</span>
</li>
<li>
<a href="/categories/Jetpack/ViewModel/">ViewModel</a>
<span class="badge">(1)</span>
</li>
<li>
<a href="/categories/知识点/">知识点</a>
<span class="badge">(2)</span>
</li>
<li>
<a href="/categories/Jetpack/Androidx/">Androidx</a>
<span class="badge">(1)</span>
</li>
<li>
<a href="/categories/Jetpack/Lifecycles/">Lifecycles</a>
<span class="badge">(1)</span>
</li>
<li>
<a href="/categories/前端/">前端</a>
<span class="badge">(5)</span>
</li>
<li>
<a href="/categories/后端/PHP/">PHP</a>
<span class="badge">(6)</span>
</li>
<li>
<a href="/categories/设计模式/">设计模式</a>
<span class="badge">(1)</span>
</li>
</ul>
</section>
<section class="widget">
<h3 class="widget-hd"><strong>热门标签</strong></h3>
<!-- 文章标签 -->
<div class="widget-bd tag-wrap">
<a class="tag-item" href="/tags/日期格式化/" title="日期格式化">日期格式化 (1)</a>
<a class="tag-item" href="/tags/Linq/" title="Linq">Linq (1)</a>
<a class="tag-item" href="/tags/visualStudio/" title="visualStudio">visualStudio (2)</a>
<a class="tag-item" href="/tags/职业生涯/" title="职业生涯">职业生涯 (2)</a>
<a class="tag-item" href="/tags/service保活/" title="service保活">service保活 (1)</a>
<a class="tag-item" href="/tags/coroutine协程/" title="coroutine协程">coroutine协程 (1)</a>
<a class="tag-item" href="/tags/view绘制/" title="view绘制">view绘制 (1)</a>
<a class="tag-item" href="/tags/Jetpack/" title="Jetpack">Jetpack (1)</a>
<a class="tag-item" href="/tags/线程切换/" title="线程切换">线程切换 (1)</a>
<a class="tag-item" href="/tags/屏幕适配/" title="屏幕适配">屏幕适配 (1)</a>
<a class="tag-item" href="/tags/开源框架/" title="开源框架">开源框架 (17)</a>
<a class="tag-item" href="/tags/安卓源码/" title="安卓源码">安卓源码 (15)</a>
<a class="tag-item" href="/tags/地图/" title="地图">地图 (2)</a>
<a class="tag-item" href="/tags/面试/" title="面试">面试 (2)</a>
<a class="tag-item" href="/tags/IIS/" title="IIS">IIS (2)</a>
<a class="tag-item" href="/tags/hexo/" title="hexo">hexo (4)</a>
<a class="tag-item" href="/tags/Androidx/" title="Androidx">Androidx (1)</a>
<a class="tag-item" href="/tags/Lifecycles/" title="Lifecycles">Lifecycles (1)</a>
<a class="tag-item" href="/tags/Paging/" title="Paging">Paging (1)</a>
<a class="tag-item" href="/tags/LiveData/" title="LiveData">LiveData (1)</a>
<a class="tag-item" href="/tags/Room/" title="Room">Room (1)</a>
<a class="tag-item" href="/tags/ViewModel/" title="ViewModel">ViewModel (1)</a>
<a class="tag-item" href="/tags/SqlServer/" title="SqlServer">SqlServer (1)</a>
<a class="tag-item" href="/tags/ViewPager/" title="ViewPager">ViewPager (1)</a>
<a class="tag-item" href="/tags/XMLHttpRequest/" title="XMLHttpRequest">XMLHttpRequest (1)</a>
<a class="tag-item" href="/tags/增量更新/" title="增量更新">增量更新 (1)</a>
<a class="tag-item" href="/tags/kotlin/" title="kotlin">kotlin (2)</a>
<a class="tag-item" href="/tags/电影/" title="电影">电影 (4)</a>
<a class="tag-item" href="/tags/心情/" title="心情">心情 (1)</a>
<a class="tag-item" href="/tags/fiddler/" title="fiddler">fiddler (1)</a>
<a class="tag-item" href="/tags/副业/" title="副业">副业 (1)</a>
<a class="tag-item" href="/tags/Activity/" title="Activity">Activity (1)</a>
<a class="tag-item" href="/tags/BroadcastReceiver/" title="BroadcastReceiver">BroadcastReceiver (1)</a>
<a class="tag-item" href="/tags/网盘资源/" title="网盘资源">网盘资源 (1)</a>
<a class="tag-item" href="/tags/职业发展/" title="职业发展">职业发展 (1)</a>
<a class="tag-item" href="/tags/跳槽/" title="跳槽">跳槽 (2)</a>
<a class="tag-item" href="/tags/购房/" title="购房">购房 (1)</a>
<a class="tag-item" href="/tags/股票/" title="股票">股票 (1)</a>
<a class="tag-item" href="/tags/图片保存/" title="图片保存">图片保存 (1)</a>
</div>
</section>
<!-- 友情链接 -->
<section class="widget">
<h3 class="widget-hd"><strong>友情链接</strong></h3>
<!-- 文章分类 -->
<ul class="widget-bd">
<li>
<a href="https://juejin.im/user/5ceb7d54f265da1b8466c2f5/posts" target="_blank" title="稀土掘金">稀土掘金</a>
</li>
<li>
<a href="https://www.cnblogs.com/bugzone" target="_blank" title="博客园">博客园</a>
</li>
<li>
<a href="https://weibo.com/230689567" target="_blank" title="新浪微博">新浪微博</a>
</li>
<li>
<a href="https://www.jianshu.com/u/ba21180e6aab" target="_blank" title="简书">简书</a>
</li>
<li>
<a href="https://github.com/freefuncode/" target="_blank" title="GitHub">GitHub</a>
</li>
</ul>
</section>
</aside>
<!-- / 侧栏部分 -->
</div>
<!-- 博客底部 -->
<footer class="footer">
©
2012-2021
<a href="/">FreeFunCode</a>
</footer>