WEBVTT

1
00:00.140 --> 00:01.010
ยินดีต้อนรับกลับมา

2
00:01.010 --> 00:03.650
เราทำส่วนของแหล่งข้อมูลระยะไกลเสร็จแล้ว

3
00:03.680 --> 00:05.850
ตอนนี้เรามาที่คลังเก็บข้อมูลกัน

4
00:05.870 --> 00:10.490
ฉันจะสร้างแพ็กเกจใหม่ชื่อ repository

5
00:10.490 --> 00:14.300
และภายในแพ็กเกจนี้ ผมจะสร้างคลาส Java ใหม่

6
00:14.300 --> 00:17.750
ฉันตั้งชื่อว่า คลังข้อสอบแบบทดสอบ

7
00:17.750 --> 00:25.850

และคลังข้อมูลมีหน้าที่รับผิดชอบในการโต้ตอบกับอินเทอร์เฟซบริการ
API

8
00:25.850 --> 00:27.290
และจัดการการดึงข้อมูลและการดำเนินการต่างๆ

9
00:27.290 --> 00:35.150
กรุณาไปที่ส่วนก่อนหน้า, mVVM

10
00:35.150 --> 00:35.930
พร้อมการปรับปรุงย้อนหลัง
เพื่อเรียนรู้อย่างลึกซึ้งเกี่ยวกับแหล่งเก็บข้อมูลเหล่านี้

11
00:35.930 --> 00:38.460
แต่อย่ากังวลไป ฉันจะดูแลทุกอย่างเอง

12
00:38.480 --> 00:46.550
ฉันจะเริ่มต้นด้วยการสร้าง Private
Questions API และตั้งชื่อว่า question API

13
00:46.580 --> 00:53.030

นี่คือตัวอย่างที่จะถูกใช้เพื่อโต้ตอบกับวิธีการของบริการ
API

14
00:53.030 --> 01:02.240
จากนั้นฉันจะสร้างคอนสตรัคเตอร์ที่มี API
นี้ และฉันจะลบ API

15
01:02.240 --> 01:07.340
นี้ออกเพราะฉันต้องกำหนด API
ใหม่ที่นี่ซึ่งเท่ากับอินสแตนซ์ใหม่ของ
retrofit

16
01:07.340 --> 01:15.500
นี่คือคลาสที่ฉันสร้างขึ้นก่อน dot get
instance dot create

17
01:15.500 --> 01:22.220
ดังนั้นฉันจะใช้เมธอด create ที่นี่
และฉันจะส่งคำถาม API จุดคลาส

18
01:22.220 --> 01:24.400
โค้ดนี้หมายความว่าอย่างไร

19
01:24.410 --> 01:26.420
กรณีการติดตั้งเพิ่มเติมใหม่

20
01:26.420 --> 01:33.470
นี่จะสร้างอินสแตนซ์ของคลาสอินสแตนซ์
retrofit ที่เราสร้างไว้ก่อนหน้านี้
ซึ่งรับผิดชอบในการให้อินสแตนซ์ retrofit

21
01:33.470 --> 01:39.470
มี URL ฐานที่กำหนดไว้ล่วงหน้าและตัวแปลง
Json

22
01:39.470 --> 01:42.260
ตัวอย่างการปรับปรุงจุดในโรงงาน

23
01:42.260 --> 01:50.360
การเรียกเมธอดนี้จะรับอินสแตนซ์ retrofit
ที่กำหนดค่าไว้โดยคลาสอินสแตนซ์ retrofit

24
01:50.360 --> 01:51.200
และเมธอด dot create ของคุณ

25
01:51.200 --> 01:59.000
วิธีนี้สร้างการใช้งานของอินเตอร์เฟซของ API
และในกรณีนี้คือ API คำถาม

26
01:59.030 --> 02:05.690
คำถาม API
อินเทอร์เฟซน่าจะมีเมธอดสำหรับการทำคำขอเครือข่ายเพื่อดึงคำถามจากเว็บเซอร์วิส

27
02:05.690 --> 02:11.810

และนี่คือสิ่งที่เราเคยทำมาก่อนเพื่อดึงคำถามจาก
API

28
02:11.840 --> 02:16.490
อีกวิธีหนึ่งในการสร้างคือประเภท LiveData

29
02:16.520 --> 02:20.030
คุณยังจำเพื่อนของเรา LiveData ได้ไหม?

30
02:20.060 --> 02:21.380
เพื่อนเก่าของเรา? ดังนั้น LiveData

31
02:21.380 --> 02:29.570
ประเภทรายการคำถามจะดึงคำถามจาก API

32
02:29.570 --> 02:39.080
ในคลังข้อมูล
เราได้กำหนดวิธีการที่คล้ายกับอินเทอร์เฟซใน
retrofit และในฐานข้อมูลห้อง

33
02:39.080 --> 02:44.120

และเราได้พูดคุยเกี่ยวกับคลังข้อมูลอย่างละเอียดในส่วนก่อนหน้านี้แล้ว

34
02:44.120 --> 02:49.070
ดังนั้น กรุณาไปที่ส่วน Retrofit Plus mVVM
อีกครั้ง

35
02:49.070 --> 02:58.580
ตอนนี้ฉันต้องเริ่มต้นด้วยการกำหนด LiveData
ที่สามารถเปลี่ยนแปลงได้ของประเภทคำถามรายการ
และฉันตั้งชื่อว่า data

36
02:58.580 --> 03:00.980
เท่ากับ new mutable live data

37
03:00.980 --> 03:08.120

และข้อมูลที่เปลี่ยนแปลงได้คือคลาสที่จัดเตรียมโดยส่วนประกอบสถาปัตยกรรมของ
Android

38
03:08.120 --> 03:11.030

และมักใช้เพื่อเก็บข้อมูลและสังเกตการเปลี่ยนแปลงของข้อมูล

39
03:11.030 --> 03:17.810
นอกจากนี้
ฉันขอแนะนำให้คุณกลับไปเรียนบทเรียนข้อมูลสดเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับข้อมูลประเภทนี้

40
03:17.810 --> 03:19.100
แต่ลองคิดดูสิ

41
03:19.100 --> 03:23.720

เพียงแค่โครงสร้างข้อมูลที่ใช้สำหรับเก็บและสังเกตการเปลี่ยนแปลงของข้อมูล

42
03:23.720 --> 03:32.150
และภายในนี้เมื่อได้รับคำถามจาก API
ฉันจำเป็นต้องใช้การเรียกประเภทคำถามแบบรายการ
และฉันจะตั้งชื่อว่า response เท่ากับ

43
03:32.150 --> 03:39.200
questions API จุด get questions

44
03:39.200 --> 03:46.340

และคุณจะเห็นว่าฉันกำลังเรียกเมธอดนี้ซึ่งส่งคืนการเรียกประเภทรายการคำถาม
Alt+.

45
03:46.340 --> 03:49.730
ป้อนเพื่อนำเข้าคลาสจากแพ็กเกจ retrofit

46
03:49.730 --> 03:52.130
ตอนนี้ฉันต้องการให้คุณมีสมาธิกับฉัน

47
03:52.130 --> 03:57.890
ฉันจะใช้คำตอบนี้เพื่อรับรายการคำถาม

48
03:57.890 --> 04:01.160
ตอบสนองด้วยการต่อคิวหรือดำเนินการ

49
04:01.160 --> 04:07.100

วิธีการใดในสองวิธีนี้ที่ใช้ในการดำเนินการคำขอเครือข่าย

50
04:07.130 --> 04:13.880
Execute
เป็นเมธอดแบบซิงโครนัสที่ใช้ในการส่งคำขอเครือข่ายใน
retrofit

51
04:13.910 --> 04:21.980
เมื่อคุณใช้ execute
คำขอเครือข่ายจะถูกดำเนินการบนเธรดปัจจุบัน

52
04:21.980 --> 04:23.060
ซึ่งมักจะเป็นเธรดหลักของ UI

53
04:23.090 --> 04:29.840

ซึ่งหมายความว่าคำขอจะบล็อกเธรดปัจจุบันจนกว่าจะเสร็จสมบูรณ์

54
04:29.870 --> 04:36.710
ควรใช้ด้วยความระมัดระวังใน Android

55
04:36.710 --> 04:43.790

เนื่องจากการเรียกใช้คำขอเครือข่ายแบบซิงโครนัสบนเธรดหลักอาจทำให้แอปพลิเคชันไม่ตอบสนอง

56
04:43.790 --> 04:45.110

และเป็นข้อผิดพลาดที่ทำให้ส่วนติดต่อผู้ใช้ค้างระหว่างการเรียกขอ

57
04:45.140 --> 04:52.820
ไม่จำเป็นต้องมีการเรียกกลับเมื่อใช้วิธี
execute
เพราะเมธอดนี้จะส่งคืนออบเจ็กต์การตอบสนองโดยตรง

58
04:52.820 --> 04:56.630
และคุณสามารถเห็นได้ในที่นี้ในเมธอด enqueue

59
04:56.630 --> 04:59.840
และนี่คือสิ่งที่เราจะใช้และฉัน

60
04:59.970 --> 05:01.140
ชอบใช้หมึกมากกว่า

61
05:01.260 --> 05:08.760

หมึกเป็นวิธีการแบบอะซิงโครนัสที่ใช้ในการทำคำขอเครือข่ายใน
retrofit

62
05:08.790 --> 05:10.080
เมื่อคุณใช้หมึก

63
05:10.110 --> 05:18.210
วิธีการ,
คำขอเครือข่ายจะถูกดำเนินการบนเธรดพื้นหลัง
และ

64
05:18.210 --> 05:20.070
retrofit
จะจัดการคำขอและการตอบสนองแบบอะซิงโครนัส

65
05:20.100 --> 05:28.920

มันถูกออกแบบมาเพื่อใช้ในสถานการณ์ที่คุณไม่ต้องการบล็อกเธรดหลักของ
UI

66
05:28.920 --> 05:37.860
ในขณะที่ทำการร้องขอเครือข่าย
เนื่องจากการบล็อกเธรดหลักอาจทำให้ส่วนติดต่อผู้ใช้ไม่ตอบสนองและค้างได้

67
05:37.890 --> 05:45.480
คุณให้ callback เป็นอาร์กิวเมนต์แก่ ink
ดังนั้นสำหรับกรณีนี้ฉันจะใช้ callback ใหม่

68
05:45.480 --> 05:46.890
รายการคำถาม

69
05:46.920 --> 05:54.840
นอกจากนี้ ฉันสามารถใช้ lambda ได้
แต่ที่นี่เรากำลังเขียนทับสองเมธอดบน
response และเมื่อเกิดข้อผิดพลาด

70
05:54.840 --> 06:04.470
ดังนั้น callback นี้จะมีเมธอดเช่น on
response

71
06:04.470 --> 06:09.330
และ on failure
ที่จะถูกเรียกใช้เมื่อคำขอสำเร็จหรือพบข้อผิดพลาดตามลำดับ

72
06:09.360 --> 06:12.870
ฉันจะเริ่มด้วยรายการคำถาม

73
06:12.870 --> 06:18.450
รายการคำถามเท่ากับเนื้อหาของคำตอบ

74
06:18.450 --> 06:25.230

และที่นี่ฉันต้องเพิ่มค่าชุดข้อมูลจุดลงในรายการ

75
06:25.260 --> 06:31.890

ที่นี่ฉันกำลังบันทึกข้อมูลลงในรายการเพราะข้อมูลเป็นข้อมูลสดที่สามารถเปลี่ยนแปลงได้

76
06:31.920 --> 06:40.380
โอเค ฉันได้รับเนื้อหาการตอบกลับนี้

77
06:40.380 --> 06:45.420

ได้รับรายการนี้และจัดเก็บภายในข้อมูลนี้ซึ่งเป็นข้อมูลสดที่ไม่สามารถเปลี่ยนแปลงได้ประเภทรายการคำถาม
โดยรับรายการคำถามทั้งหมด

78
06:45.420 --> 06:49.740
ขั้นตอนสุดท้ายคือการส่งคืนข้อมูลนี้

79
06:49.770 --> 06:51.600
นี่คือคลังข้อมูลของเรา

80
06:51.630 --> 06:56.250
ตอนนี้เรามาดูที่เลเยอร์ ViewModel กัน


