第一行代码 ANDROID 第3版 🔍
郭霖著 北京:人民邮电出版社, 2020
中文 [zh] · PDF · 247.4MB · 2020 · 📗 未知类型的图书 · 🚀/upload · Save
描述
封面 1
书名 3
版权 4
前言 5
目录 11
1 16
2 17
3 18
4 19
5 20
6 21
7 22
8 23
9 24
10 25
11 26
12 27
13 28
14 29
15 30
16 31
17 32
18 33
19 34
20 35
21 36
22 37
23 38
24 39
25 40
26 41
27 42
28 43
29 44
30 45
31 46
32 47
33 48
34 49
35 50
36 51
37 52
38 53
39 54
40 55
41 56
42 57
43 58
44 59
45 60
46 61
47 62
48 63
49 64
50 65
51 66
52 67
53 68
54 69
55 70
56 71
57 72
58 73
59 74
60 75
61 76
62 77
63 78
64 79
65 80
66 81
67 82
68 83
69 84
70 85
71 86
72 87
73 88
74 89
75 90
76 91
77 92
78 93
79 94
80 95
81 96
82 97
83 98
84 99
85 100
86 101
87 102
88 103
89 104
90 105
91 106
92 107
93 108
94 109
95 110
96 111
97 112
98 113
99 114
100 115
101 116
102 117
103 118
104 119
105 120
106 121
107 122
108 123
109 124
110 125
111 126
112 127
113 128
114 129
115 130
116 131
117 132
118 133
119 134
120 135
121 136
122 137
123 138
124 139
125 140
126 141
127 142
128 143
129 144
130 145
131 146
132 147
133 148
134 149
135 150
136 151
137 152
138 153
139 154
140 155
141 156
142 157
143 158
144 159
145 160
146 161
147 162
148 163
149 164
150 165
151 166
152 167
153 168
154 169
155 170
156 171
157 172
158 173
159 174
160 175
161 176
162 177
163 178
164 179
165 180
166 181
167 182
168 183
169 184
170 185
171 186
172 187
173 188
174 189
175 190
176 191
177 192
178 193
179 194
180 195
181 196
182 197
183 198
184 199
185 200
186 201
187 202
188 203
189 204
190 205
191 206
192 207
193 208
194 209
195 210
196 211
197 212
198 213
199 214
200 215
201 216
202 217
203 218
204 219
205 220
206 221
207 222
208 223
209 224
210 225
211 226
212 227
213 228
214 229
215 230
216 231
217 232
218 233
219 234
220 235
221 236
222 237
223 238
224 239
225 240
226 241
227 242
228 243
229 244
230 245
231 246
232 247
233 248
234 249
235 250
236 251
237 252
238 253
239 254
240 255
241 256
242 257
243 258
244 259
245 260
246 261
247 262
248 263
249 264
250 265
251 266
252 267
253 268
254 269
255 270
256 271
257 272
258 273
259 274
260 275
261 276
262 277
263 278
264 279
265 280
266 281
267 282
268 283
269 284
270 285
271 286
272 287
273 288
274 289
275 290
276 291
277 292
278 293
279 294
280 295
281 296
282 297
283 298
284 299
285 300
286 301
287 302
288 303
289 304
290 305
291 306
292 307
293 308
294 309
295 310
296 311
297 312
298 313
299 314
300 315
301 316
302 317
303 318
304 319
305 320
306 321
307 322
308 323
309 324
310 325
311 326
312 327
313 328
314 329
315 330
316 331
317 332
318 333
319 334
320 335
321 336
322 337
323 338
324 339
325 340
326 341
327 342
328 343
329 344
330 345
331 346
332 347
333 348
334 349
335 350
336 351
337 352
338 353
339 354
340 355
341 356
342 357
343 358
344 359
345 360
346 361
347 362
348 363
349 364
350 365
351 366
352 367
353 368
354 369
355 370
356 371
357 372
358 373
359 374
360 375
361 376
362 377
363 378
364 379
365 380
366 381
367 382
368 383
369 384
370 385
371 386
372 387
373 388
374 389
375 390
376 391
377 392
378 393
379 394
380 395
381 396
382 397
383 398
384 399
385 400
386 401
387 402
388 403
389 404
390 405
391 406
392 407
393 408
394 409
395 410
396 411
397 412
398 413
399 414
400 415
401 416
402 417
403 418
404 419
405 420
406 421
407 422
408 423
409 424
410 425
411 426
412 427
413 428
414 429
415 430
416 431
417 432
418 433
419 434
420 435
421 436
422 437
423 438
424 439
425 440
426 441
427 442
428 443
429 444
430 445
431 446
432 447
433 448
434 449
435 450
436 451
437 452
438 453
439 454
440 455
441 456
442 457
443 458
444 459
445 460
446 461
447 462
448 463
449 464
450 465
451 466
452 467
453 468
454 469
455 470
456 471
457 472
458 473
459 474
460 475
461 476
462 477
463 478
464 479
465 480
466 481
467 482
468 483
469 484
470 485
471 486
472 487
473 488
474 489
475 490
476 491
477 492
478 493
479 494
480 495
481 496
482 497
483 498
484 499
485 500
486 501
487 502
488 503
489 504
490 505
491 506
492 507
493 508
494 509
495 510
496 511
497 512
498 513
499 514
500 515
501 516
502 517
503 518
504 519
505 520
506 521
507 522
508 523
509 524
510 525
511 526
512 527
513 528
514 529
515 530
516 531
517 532
518 533
519 534
520 535
521 536
522 537
523 538
524 539
525 540
526 541
527 542
528 543
529 544
530 545
531 546
532 547
533 548
534 549
535 550
536 551
537 552
538 553
539 554
540 555
541 556
542 557
543 558
544 559
545 560
546 561
547 562
548 563
549 564
550 565
551 566
552 567
553 568
554 569
555 570
556 571
557 572
558 573
559 574
560 575
561 576
562 577
563 578
564 579
565 580
566 581
567 582
568 583
569 584
570 585
571 586
572 587
573 588
574 589
575 590
576 591
577 592
578 593
579 594
580 595
581 596
582 597
583 598
584 599
585 600
586 601
587 602
588 603
589 604
590 605
591 606
592 607
593 608
594 609
595 610
596 611
597 612
598 613
599 614
600 615
601 616
602 617
603 618
604 619
605 620
606 621
607 622
608 623
609 624
610 625
611 626
612 627
613 628
614 629
615 630
616 631
617 632
618 633
619 634
620 635
621 636
622 637
623 638
624 639
625 640
626 641
627 642
628 643
629 644
630 645
631 646
632 647
633 648
634 649
635 650
636 651
637 652
638 653
639 654
640 655
641 656
642 657
643 658
644 659
645 660
646 661
647 662
648 663
649 664
650 665
651 666
652 667
653 668
654 669
655 670
656 671
657 672
658 673
659 674
660 675
661 676
662 677
663 678
664 679
665 680
666 681
667 682
668 683
669 684
670 685
671 686
672 687
673 688
674 689
675 690
676 691
677 692
678 693
679 694
680 695
681 696
682 697
683 698
684 699
685 700
686 701
687 702
688 703
689 704
690 705
691 706
692 707
备选作者
Pdg2Pic
元数据中的注释
producers:
FreePic2Pdf_Lib - v3.02
元数据中的注释
Bookmarks: p1 (p1): 第1章 开始启程,你的第一行Android代码
p1-1 (p2): 1.1 了解全貌,Android王国简介
p1-1-1 (p2): 1.1.1 Android系统架构
p1-1-2 (p3): 1.1.2 Android已发布的版本
p1-1-3 (p4): 1.1.3 Android应用开发特色
p1-2 (p5): 1.2 手把手带你搭建开发环境
p1-2-1 (p5): 1.2.1 准备所需要的工具
p1-2-2 (p5): 1.2.2 搭建开发环境
p1-3 (p9): 1.3 创建你的第一个Android项目
p1-3-1 (p9): 1.3.1 创建HelloWorld项目
p1-3-2 (p11): 1.3.2 启动模拟器
p1-3-3 (p14): 1.3.3 运行HelloWorld
p1-3-4 (p15): 1.3.4 分析你的第一个Android程序
p1-3-5 (p20): 1.3.5 详解项目中的资源
p1-3-6 (p22): 1.3.6 详解build.gradle文件
p1-4 (p25): 1.4 前行必备:掌握日志工具的使用
p1-4-1 (p25): 1.4.1 使用Android的日志工具Log
p1-4-2 (p26): 1.4.2 为什么使用Log而不使用println()
p1-5 (p28): 1.5 小结与点评
p2 (p30): 第2章 探究新语言,快速入门Kotlin编程
p2-1 (p31): 2.1 Kotlin语言简介
p2-2 (p32): 2.2 如何运行Kotlin代码
p2-3 (p35): 2.3 编程之本:变量和函数
p2-3-1 (p35): 2.3.1 变量
p2-3-2 (p37): 2.3.2 函数
p2-4 (p41): 2.4 程序的逻辑控制
p2-4-1 (p41): 2.4.1 if条件语句
p2-4-2 (p42): 2.4.2 when条件语句
p2-4-3 (p45): 2.4.3 循环语句
p2-5 (p48): 2.5 面向对象编程
p2-5-1 (p49): 2.5.1 类与对象
p2-5-2 (p50): 2.5.2 继承与构造函数
p2-5-3 (p55): 2.5.3 接口
p2-5-4 (p58): 2.5.4 数据类与单例类
p2-6 (p61): 2.6 Lambda编程
p2-6-1 (p61): 2.6.1 集合的创建与遍历
p2-6-2 (p65): 2.6.2 集合的函数式API
p2-6-3 (p69): 2.6.3 Java函数式API的使用
p2-7 (p71): 2.7 空指针检查
p2-7-1 (p72): 2.7.1 可空类型系统
p2-7-2 (p73): 2.7.2 判空辅助工具
p2-8 (p77): 2.8 Kotlin中的小魔术
p2-8-1 (p77): 2.8.1 字符串内嵌表达式
p2-8-2 (p78): 2.8.2 函数的参数默认值
p2-9 (p81): 2.9 小结与点评
p3 (p82): 第3章 先从看得到的入手,探究Activity
p3-1 (p82): 3.1 Activity是什么
p3-2 (p82): 3.2 Activity的基本用法
p3-2-1 (p83): 3.2.1 手动创建Activity
p3-2-2 (p85): 3.2.2 创建和加载布局
p3-2-3 (p88): 3.2.3 在AndroidManifest文件中注册
p3-2-4 (p90): 3.2.4 在Activity中使用Toast
p3-2-5 (p92): 3.2.5 在Activity中使用Menu
p3-2-6 (p96): 3.2.6 销毁一个Activity
p3-3 (p96): 3.3 使用Intent在Activity之间穿梭
p3-3-1 (p96): 3.3.1 使用显式Intent
p3-3-2 (p99): 3.3.2 使用隐式Intent
p3-3-3 (p101): 3.3.3 更多隐式Intent的用法
p3-3-4 (p105): 3.3.4 向下一个Activity传递数据
p3-3-5 (p106): 3.3.5 返回数据给上一个Activity
p3-4 (p108): 3.4 Activity的生命周期
p3-4-1 (p108): 3.4.1 返回栈
p3-4-2 (p109): 3.4.2 Activity状态
p3-4-3 (p110): 3.4.3 Activity的生存期
p3-4-4 (p111): 3.4.4 体验Activity的生命周期
p3-4-5 (p117): 3.4.5 Activity被回收了怎么办
p3-5 (p118): 3.5 Activity的启动模式
p3-5-1 (p119): 3.5.1 standard
p3-5-2 (p120): 3.5.2 singleTop
p3-5-3 (p122): 3.5.3 singleTask
p3-5-4 (p123): 3.5.4 singleInstance
p3-6 (p126): 3.6 Activity的最佳实践
p3-6-1 (p126): 3.6.1 知晓当前是在哪一个Activity
p3-6-2 (p127): 3.6.2 随时随地退出程序
p3-6-3 (p129): 3.6.3 启动Activity的最佳写法
p3-7 (p130): 3.7 Kotlin课堂:标准函数和静态方法
p3-7-1 (p130): 3.7.1 标准函数with、run和apply
p3-7-2 (p133): 3.7.2 定义静态方法
p3-8 (p137): 3.8 小结与点评
p4 (p138): 第4章 软件也要拼脸蛋,UI开发的点点滴滴
p4-1 (p138): 4.1 该如何编写程序界面
p4-2 (p139): 4.2 常用控件的使用方法
p4-2-1 (p139): 4.2.1 TextView
p4-2-2 (p142): 4.2.2 Button
p4-2-3 (p144): 4.2.3 EditText
p4-2-4 (p149): 4.2.4 ImageView
p4-2-5 (p151): 4.2.5 ProgressBar
p4-2-6 (p154): 4.2.6 AlertDialog
p4-3 (p156): 4.3 详解3种基本布局
p4-3-1 (p156): 4.3.1 LinearLayout
p4-3-2 (p163): 4.3.2 RelativeLayout
p4-3-3 (p166): 4.3.3 FrameLayout
p4-4 (p169): 4.4 系统控件不够用?创建自定义控件
p4-4-1 (p169): 4.4.1 引入布局
p4-4-2 (p172): 4.4.2 创建自定义控件
p4-5 (p174): 4.5 最常用和最难用的控件:ListView
p4-5-1 (p174): 4.5.1 ListView的简单用法
p4-5-2 (p176): 4.5.2 定制ListView的界面
p4-5-3 (p179): 4.5.3 提升ListView的运行效率
p4-5-4 (p180): 4.5.4 ListView的点击事件
p4-6 (p182): 4.6 更强大的滚动控件:RecyclerView
p4-6-1 (p183): 4.6.1 RecyclerView的基本用法
p4-6-2 (p186): 4.6.2 实现横向滚动和瀑布流布局
p4-6-3 (p191): 4.6.3 RecyclerView的点击事件
p4-7 (p193): 4.7 编写界面的最佳实践
p4-7-1 (p193): 4.7.1 制作9-Patch图片
p4-7-2 (p196): 4.7.2 编写精美的聊天界面
p4-8 (p201): 4.8 Kotlin课堂:延迟初始化和密封类
p4-8-1 (p201): 4.8.1 对变量延迟初始化
p4-8-2 (p204): 4.8.2 使用密封类优化代码
p4-9 (p206): 4.9 小结与点评
p5 (p207): 第5章 手机平板要兼顾,探究Fragment
p5-1 (p207): 5.1 Fragment是什么
p5-2 (p209): 5.2 Fragment的使用方式
p5-2-1 (p210): 5.2.1 Fragment的简单用法
p5-2-2 (p212): 5.2.2 动态添加Fragment
p5-2-3 (p215): 5.2.3 在Fragment中实现返回栈
p5-2-4 (p216): 5.2.4 Fragment和Activity之间的交互
p5-3 (p217): 5.3 Fragment的生命周期
p5-3-1 (p217): 5.3.1 Fragment的状态和回调
p5-3-2 (p219): 5.3.2 体验Fragment的生命周期
p5-4 (p221): 5.4 动态加载布局的技巧
p5-4-1 (p221): 5.4.1 使用限定符
p5-4-2 (p224): 5.4.2 使用最小宽度限定符
p5-5 (p225): 5.5 Fragment的最佳实践:一个简易版的新闻应用
p5-6 (p234): 5.6 Kotlin课堂:扩展函数和运算符重载
p5-6-1 (p234): 5.6.1 大有用途的扩展函数
p5-6-2 (p236): 5.6.2 有趣的运算符重载
p5-7 (p240): 5.7 小结与点评
p6 (p242): 第6章 全局大喇叭,详解广播机制
p6-1 (p242): 6.1 广播机制简介
p6-2 (p243): 6.2 接收系统广播
p6-2-1 (p243): 6.2.1 动态注册监听时间变化
p6-2-2 (p245): 6.2.2 静态注册实现开机启动
p6-3 (p249): 6.3 发送自定义广播
p6-3-1 (p249): 6.3.1 发送标准广播
p6-3-2 (p252): 6.3.2 发送有序广播
p6-4 (p255): 6.4 广播的最佳实践:实现强制下线功能
p6-5 (p261): 6.5 Kotlin课堂:高阶函数详解
p6-5-1 (p261): 6.5.1 定义高阶函数
p6-5-2 (p265): 6.5.2 内联函数的作用
p6-5-3 (p268): 6.5.3 noinline与crossinline
p6-6 (p271): 6.6 Git时间:初识版本控制工具
p6-6-1 (p271): 6.6.1 安装Git
p6-6-2 (p272): 6.6.2 创建代码仓库
p6-6-3 (p274): 6.6.3 提交本地代码
p6-7 (p274): 6.7 小结与点评
p7 (p275): 第7章 数据存储全方案,详解持久化技术
p7-1 (p275): 7.1 持久化技术简介
p7-2 (p276): 7.2 文件存储
p7-2-1 (p276): 7.2.1 将数据存储到文件中
p7-2-2 (p279): 7.2.2 从文件中读取数据
p7-3 (p281): 7.3 SharedPreferences存储
p7-3-1 (p282): 7.3.1 将数据存储到SharedPre-ferences中
p7-3-2 (p284): 7.3.2 从Shared Preferences中读取数据
p7-3-3 (p285): 7.3.3 实现记住密码功能
p7-4 (p288): 7.4 SQLite数据库存储
p7-4-1 (p289): 7.4.1 创建数据库
p7-4-2 (p295): 7.4.2 升级数据库
p7-4-3 (p297): 7.4.3 添加数据
p7-4-4 (p300): 7.4.4 更新数据
p7-4-5 (p302): 7.4.5 删除数据
p7-4-6 (p304): 7.4.6 查询数据
p7-4-7 (p307): 7.4.7 使用SQL操作数据库
p7-5 (p307): 7.5 SQLite数据库的最佳实践
p7-5-1 (p308): 7.5.1 使用事务
p7-5-2 (p309): 7.5.2 升级数据库的最佳写法
p7-6 (p312): 7.6 Kotlin课堂:高阶函数的应用
p7-6-1 (p312): 7.6.1 简化SharedPreferences的用法
p7-6-2 (p314): 7.6.2 简化ContentValues的用法
p7-7 (p317): 7.7 小结与点评
p8 (p318): 第8章 跨程序共享数据,探究ContentProvider
p8-1 (p318): 8.1 ContentProvider简介
p8-2 (p319): 8.2 运行时权限
p8-2-1 (p319): 8.2.1 Android权限机制详解
p8-2-2 (p322): 8.2.2 在程序运行时申请权限
p8-3 (p326): 8.3 访问其他程序中的数据
p8-3-1 (p326): 8.3.1 ContentResolver的基本用法
p8-3-2 (p329): 8.3.2 读取系统联系人
p8-4 (p332): 8.4 创建自己的ContentProvider
p8-4-1 (p332): 8.4.1 创建ContentProvider的步骤
p8-4-2 (p336): 8.4.2 实现跨程序数据共享
p8-5 (p345): 8.5 Kotlin课堂:泛型和委托
p8-5-1 (p345): 8.5.1 泛型的基本用法
p8-5-2 (p347): 8.5.2 类委托和委托属性
p8-5-3 (p350): 8.5.3 实现一个自己的lazy函数
p8-6 (p352): 8.6 小结与点评
p9 (p353): 第9章 丰富你的程序,运用手机多媒体
p9-1 (p353): 9.1 将程序运行到手机上
p9-2 (p355): 9.2 使用通知
p9-2-1 (p355): 9.2.1 创建通知渠道
p9-2-2 (p357): 9.2.2 通知的基本用法
p9-2-3 (p362): 9.2.3 通知的进阶技巧
p9-3 (p367): 9.3 调用摄像头和相册
p9-3-1 (p367): 9.3.1 调用摄像头拍照
p9-3-2 (p371): 9.3.2 从相册中选择图片
p9-4 (p374): 9.4 播放多媒体文件
p9-4-1 (p374): 9.4.1 播放音频
p9-4-2 (p377): 9.4.2 播放视频
p9-5 (p381): 9.5 Kotlin课堂:使用infix函数构建更可读的语法
p9-6 (p383): 9.6 Git时间:版本控制工具进阶
p9-6-1 (p384): 9.6.1 忽略文件
p9-6-2 (p385): 9.6.2 查看修改内容
p9-6-3 (p387): 9.6.3 撤销未提交的修改
p9-6-4 (p388): 9.6.4 查看提交记录
p9-7 (p389): 9.7 小结与点评
p10 (p390): 第10章 后台默默的劳动者,探究Service
p10-1 (p390): 10.1 Service是什么
p10-2 (p391): 10.2 Android多线程编程
p10-2-1 (p391): 10.2.1 线程的基本用法
p10-2-2 (p392): 10.2.2 在子线程中更新UI
p10-2-3 (p395): 10.2.3 解析异步消息处理机制
p10-2-4 (p396): 10.2.4 使用AsyncTask
p10-3 (p399): 10.3 Service的基本用法
p10-3-1 (p399): 10.3.1 定义一个Service
p10-3-2 (p401): 10.3.2 启动和停止Service
p10-3-3 (p404): 10.3.3 Activity和Service进行通信
p10-4 (p408): 10.4 Service的生命周期
p10-5 (p408): 10.5 Service的更多技巧
p10-5-1 (p409): 10.5.1 使用前台Service
p10-5-2 (p411): 10.5.2 使用IntentService
p10-6 (p415): 10.6 Kotlin课堂:泛型的高级特性
p10-6-1 (p415): 10.6.1 对泛型进行实化
p10-6-2 (p417): 10.6.2 泛型实化的应用
p10-6-3 (p418): 10.6.3 泛型的协变
p10-6-4 (p422): 10.6.4 泛型的逆变
p10-7 (p425): 10.7 小结与点评
p11 (p427): 第11章 看看精彩的世界,使用网络技术
p11-1 (p427): 11.1 WebView的用法
p11-2 (p429): 11.2 使用HTTP访问网络
p11-2-1 (p430): 11.2.1 使用HttpURLConnection
p11-2-2 (p433): 11.2.2 使用OkHttp
p11-3 (p436): 11.3 解析XML格式数据
p11-3-1 (p438): 11.3.1 Pull解析方式
p11-3-2 (p441): 11.3.2 SAX解析方式
p11-4 (p444): 11.4 解析JSON格式数据
p11-4-1 (p445): 11.4.1 使用JSONObject
p11-4-2 (p446): 11.4.2 使用GSON
p11-5 (p448): 11.5 网络请求回调的实现方式
p11-6 (p451): 11.6 最好用的网络库:Retrofit
p11-6-1 (p452): 11.6.1 Retrofit的基本用法
p11-6-2 (p456): 11.6.2 处理复杂的接口地址类型
p11-6-3 (p459): 11.6.3 Retrofit构建器的最佳写法
p11-7 (p461): 11.7 Kotlin课堂:使用协程编写高效的并发程序
p11-7-1 (p461): 11.7.1 协程的基本用法
p11-7-2 (p467): 11.7.2 更多的作用域构建器
p11-7-3 (p471): 11.7.3 使用协程简化回调的写法
p11-8 (p474): 11.8 小结与点评
p12 (p475): 第12章 最佳的UI体验,Material Design实战
p12-1 (p475): 12.1 什么是Material Design
p12-2 (p476): 12.2 Toolbar
p12-3 (p483): 12.3 滑动菜单
p12-3-1 (p483): 12.3.1 DrawerLayout
p12-3-2 (p486): 12.3.2 NavigationView
p12-4 (p491): 12.4 悬浮按钮和可交互提示
p12-4-1 (p491): 12.4.1 FloatingActionButton
p12-4-2 (p494): 12.4.2 Snackbar
p12-4-3 (p496): 12.4.3 CoordinatorLayout
p12-5 (p498): 12.5 卡片式布局
p12-5-1 (p498): 12.5.1 MaterialCardView
p12-5-2 (p504): 12.5.2 AppBarLayout
p12-6 (p507): 12.6 下拉刷新
p12-7 (p510): 12.7 可折叠式标题栏
p12-7-1 (p510): 12.7.1 CollapsingToolbarLayout
p12-7-2 (p519): 12.7.2 充分利用系统状态栏空间
p12-8 (p522): 12.8 Kotlin课堂:编写好用的工具方法
p12-8-1 (p522): 12.8.1 求N个数的最大最小值
p12-8-2 (p524): 12.8.2 简化Toast的用法
p12-8-3 (p526): 12.8.3 简化Snackbar的用法
p12-9 (p528): 12.9 Git时间:版本控制工具的高级用法
p12-9-1 (p528): 12.9.1 分支的用法
p12-9-2 (p530): 12.9.2 与远程版本库协作
p12-10 (p532): 12.10 小结与点评
p13 (p533): 第13章 高级程序开发组件,探究Jetpack
p13-1 (p533): 13.1 Jetpack简介
p13-2 (p534): 13.2 ViewModel
p13-2-1 (p536): 13.2.1 ViewModel的基本用法
p13-2-2 (p539): 13.2.2 向ViewModel传递参数
p13-3 (p541): 13.3 Lifecycles
p13-4 (p545): 13.4 LiveData
p13-4-1 (p545): 13.4.1 LiveData的基本用法
p13-4-2 (p549): 13.4.2 map和switchMap
p13-5 (p554): 13.5 Room
p13-5-1 (p555): 13.5.1 使用Room进行增删改查
p13-5-2 (p562): 13.5.2 Room的数据库升级
p13-6 (p565): 13.6 WorkManager
p13-6-1 (p566): 13.6.1 WorkManager的基本用法
p13-6-2 (p568): 13.6.2 使用WorkManager处理复杂的任务
p13-7 (p571): 13.7 Kotlin课堂:使用DSL构建专有的语法结构
p13-8 (p577): 13.8 小结与点评
p14 (p579): 第14章 继续进阶,你还应该掌握的高级技巧
p14-1 (p579): 14.1 全局获取Context的技巧
p14-2 (p582): 14.2 使用Intent传递对象
p14-2-1 (p582): 14.2.1 Serializable方式
p14-2-2 (p583): 14.2.2 Parcelable方式
p14-3 (p584): 14.3 定制自己的日志工具
p14-4 (p586): 14.4 调试Android程序
p14-5 (p589): 14.5 深色主题
p14-6 (p596): 14.6 Kotlin课堂:Java与Kotlin代码之间的转换
p14-7 (p600): 14.7 总结
p15 (p601): 第15章 进入实战,开发一个天气预报App
p15-1 (p601): 15.1 功能需求及技术可行性分析
p15-2 (p605): 15.2 Git时间:将代码托管到GitHub上
p15-3 (p612): 15.3 搭建MVVM项目架构
p15-4 (p615): 15.4 搜索全球城市数据
p15-4-1 (p615): 15.4.1 实现逻辑层代码
p15-4-2 (p620): 15.4.2 实现UI层代码
p15-5 (p626): 15.5 显示天气信息
p15-5-1 (p626): 15.5.1 实现逻辑层代码
p15-5-2 (p631): 15.5.2 实现UI层代码
p15-5-3 (p645): 15.5.3 记录选中的城市
p15-6 (p647): 15.6 手动刷新天气和切换城市
p15-6-1 (p648): 15.6.1 手动刷新天气
p15-6-2 (p650): 15.6.2 切换城市
p15-7 (p654): 15.7 制作App的图标
p15-8 (p659): 15.8 生成正式签名的APK文件
p15-8-1 (p660): 15.8.1 使用Android Studio生成
p15-8-2 (p663): 15.8.2 使用Gradle生成
p15-9 (p666): 15.9 你还可以做的事情
p16 (p669): 第16章 编写并发布一个开源库,PermissionX
p16-1 (p669): 16.1 开发前的准备工作
p16-2 (p673): 16.2 实现PermissionX开源库
p16-3 (p678): 16.3 对开源库进行测试
p16-4 (p681): 16.4 将开源库发布到jcenter仓库
p16-5 (p688): 16.5 体验我们的成果
p16-6 (p691): 16.6 结束语
开源日期
2025-01-15
更多信息……

🚀 快速下载

成为会员以支持书籍、论文等的长期保存。为了感谢您对我们的支持,您将获得高速下载权益。❤️
如果您在本月捐款,您将获得双倍的快速下载次数。

🐢 低速下载

由可信的合作方提供。 更多信息请参见常见问题解答。 (可能需要验证浏览器——无限次下载!)

所有选项下载的文件都相同,应该可以安全使用。即使这样,从互联网下载文件时始终要小心。例如,确保您的设备更新及时。
  • 对于大文件,我们建议使用下载管理器以防止中断。
    推荐的下载管理器:JDownloader
  • 您将需要一个电子书或 PDF 阅读器来打开文件,具体取决于文件格式。
    推荐的电子书阅读器:Anna的档案在线查看器ReadEraCalibre
  • 使用在线工具进行格式转换。
    推荐的转换工具:CloudConvertPrintFriendly
  • 您可以将 PDF 和 EPUB 文件发送到您的 Kindle 或 Kobo 电子阅读器。
    推荐的工具:亚马逊的“发送到 Kindle”djazz 的“发送到 Kobo/Kindle”
  • 支持作者和图书馆
    ✍️ 如果您喜欢这个并且能够负担得起,请考虑购买原版,或直接支持作者。
    📚 如果您当地的图书馆有这本书,请考虑在那里免费借阅。