WEBVTT

1
00:00.200 --> 00:02.730
เรามาดำเนินการต่อกับที่เก็บข้อมูลกันเถอะ

2
00:02.750 --> 00:04.250
ฉันจะใช้การโทรนี้

3
00:04.250 --> 00:06.980
และมีวิธีการมากมายที่นี่

4
00:06.980 --> 00:10.820
ในอินสแตนซ์ของการเรียก
เรามีการเข้าคิวและการดำเนินการ

5
00:10.820 --> 00:18.350
Enqueue และ execute
เป็นสองวิธีที่มีให้โดยอินเตอร์เฟซการเรียกเพื่อส่งคำขอ

6
00:18.350 --> 00:19.040
Http ไปยังเว็บเซอร์วิสหรือ API

7
00:19.070 --> 00:23.630

พวกเขาถูกใช้เพื่อเริ่มต้นคำขอและรับการตอบกลับจากเซิร์ฟเวอร์

8
00:23.630 --> 00:28.240
อย่างไรก็ตาม
พวกเขาแตกต่างกันในแง่ของวิธีการจัดการคำขอและการตอบสนอง

9
00:28.250 --> 00:30.800
ในกรณีของเรา ฉันจะใช้หมึก

10
00:30.890 --> 00:36.740

หมึกเป็นวิธีการแบบอะซิงโครนัสสำหรับการสร้างคำขอ
Http

11
00:36.770 --> 00:43.190

โดยทั่วไปจะใช้เมื่อคุณต้องการทำการร้องขอเครือข่ายในเธรดพื้นหลังและจัดการการตอบกลับบนเธรด
UI

12
00:43.190 --> 00:45.230
หลัก

13
00:45.230 --> 00:53.570
ในขณะที่เมธอด execute
เป็นเมธอดแบบซิงโครนัสสำหรับการส่งคำขอ Http

14
00:53.570 --> 01:00.900

มักใช้เมื่อคุณต้องการทำการร้องขอเครือข่ายบนเธรดปัจจุบัน
ซึ่งมักไม่แนะนำสำหรับเธรดหลักของ UI ของ

15
01:00.900 --> 01:08.220
Android เนื่องจากอาจทำให้ UI
หยุดทำงานหรือตอบสนองไม่ได้หากการดำเนินการเครือข่ายใช้เวลานาน

16
01:08.220 --> 01:13.650
ดังนั้นผมขอแนะนำให้คุณใช้ enqueue
แทนที่จะใช้ execute ในเธรดหลัก

17
01:13.650 --> 01:20.760

การเพิ่มคิวจะอยู่ในเธรดพื้นหลังเมื่อคุณเรียกใช้
enqueue

18
01:20.760 --> 01:27.660
retrofit จะจัดการเธรดให้คุณโดยอัตโนมัติ

19
01:27.660 --> 01:29.040

เพื่อให้มั่นใจว่าคำขอเครือข่ายจะทำงานในเธรดพื้นหลังและผลลัพธ์จะถูกส่งกลับมายังเธรดหลัก

20
01:29.040 --> 01:35.700
คุณส่ง callback เป็นอาร์กิวเมนต์ให้กับ
enqueue
ซึ่งจะเรียกใช้เมื่อคำขอเสร็จสมบูรณ์

21
01:35.700 --> 01:42.660
ดังนั้นฉันจะส่ง callback ใหม่
และเรามีสองเมธอดสำหรับการตอบสนองและเมื่อเกิดข้อผิดพลาด

22
01:42.690 --> 01:48.810
เมธอด callback
เหล่านี้ใช้เพื่อจัดการกรณีความสำเร็จและความล้มเหลวตามลำดับ

23
01:48.810 --> 01:58.110
หากการตอบสนองสำเร็จ
เราจำเป็นต้องรับอ็อบเจกต์ผลลัพธ์เพื่อให้
result เท่ากับเนื้อหาของ response

24
01:58.110 --> 02:03.270
และฉันจะเก็บคำตอบนี้ dot body
ไว้ภายในวัตถุผลลัพธ์

25
02:03.270 --> 02:12.300
อีกครั้งครับทุกคน
ผมได้รับคำตอบทั้งหมดนี้ในรูปแบบของออบเจ็กต์ผลลัพธ์

26
02:12.300 --> 02:12.690
และกำลังเก็บมันไว้ในออบเจ็กต์ผลลัพธ์อีกที

27
02:12.690 --> 02:17.320
ดังนั้นสำหรับกรณีนี้ ฉันจึงได้ผลลัพธ์เป็น
equal response dot body method

28
02:17.340 --> 02:28.110

จากนั้นฉันต้องตรวจสอบว่าผลลัพธ์ไม่เท่ากับค่าว่าง
และผลลัพธ์จุดที่ได้ไม่เท่ากับค่าว่าง

29
02:28.110 --> 02:37.200
จากนั้นฉันจะสร้างการตอบสนองแบบซ้อนกันชื่อ
movies ซึ่งเท่ากับ result dot get results

30
02:37.200 --> 02:44.490
หากเราไปที่คลาสผลลัพธ์ เราจะเห็นเมธอดนี้
get ที่คืนค่าเป็นรายการของภาพยนตร์

31
02:44.490 --> 02:46.520
และนี่คือสิ่งที่ฉันต้องการ

32
02:46.530 --> 02:54.840

ผมต้องการรับข้อมูลตอบกลับแบบซ้อนของคลาสข้อมูลอื่น
ๆ อีกครั้งนะครับ

33
02:54.840 --> 03:00.360
แค่แจ้งให้ทราบว่าผลลัพธ์ตรงนี้คืออาร์เรย์
และนี่คือวิธีที่เราจัดการกับอาร์เรย์ใน
Json

34
03:00.360 --> 03:07.380
เรามีอาร์เรย์ของวัตถุจำนวน 20
รายการอยู่ภายในวัตถุของข้อมูลตอบกลับทั้งหมดที่นี่

35
03:07.380 --> 03:12.120

ฉันต้องแปลงมันเพราะมันเป็นรายการอาร์เรย์ของภาพยนตร์

36
03:12.120 --> 03:21.600

จากนั้นตัวแปรข้อมูลสดที่เปลี่ยนแปลงได้ที่เราสร้างไว้ก่อนที่ฉันจะเรียกใช้มัน

37
03:21.600 --> 03:30.180

และใช้ค่าที่ตั้งไว้แล้วและส่งรายการอาร์เรย์ของภาพยนตร์ที่เราสร้างขึ้นจากการตอบสนองนี้และตั้งค่าให้กับค่าชุดข้อมูลสดที่เปลี่ยนแปลงได้นี้

38
03:30.210 --> 03:36.690
วิธีนี้สามารถเรียกใช้บนเธรดหลักของ UI
ได้และจะตั้งค่าใหม่ทันที

39
03:36.690 --> 03:42.420
หากถูกเรียกจากเธรดพื้นหลัง
จะเกิดข้อยกเว้นหลังการส่งค่าเมธอด

40
03:42.420 --> 03:46.500

วิธีนี้สามารถเรียกได้จากทุกเธรดและตารางเวลา

41
03:46.500 --> 03:50.040
ค่าใหม่ที่จะกำหนดบนเธรดหลัก

42
03:50.040 --> 03:54.750

มีประโยชน์เมื่อคุณต้องการอัปเดตข้อมูลสดจากเธรดเบื้องหลัง

43
03:54.750 --> 03:57.870

ถ้าอย่างนั้นฉันก็ไม่จำเป็นต้องทำอะไรเลยกับความล้มเหลวนั้น

44
03:57.870 --> 04:04.470

และที่นี่ฉันจำเป็นต้องคืนวัตถุของข้อมูลสดที่เปลี่ยนแปลงได้

45
04:04.470 --> 04:09.570

เนื่องจากนี่คือเมธอดที่คืนข้อมูลสดที่เปลี่ยนแปลงได้และมันถูกวางไว้ภายในคลังภาพยนตร์นี้


