อะไรคือความแตกต่างระหว่าง Service, Async Task & Thread หากฉันไม่ผิดพวกเขาทั้งหมดจะใช้ทำบางสิ่งในพื้นหลัง ดังนั้นวิธีการตัดสินใจที่จะใช้และเมื่อใด
อะไรคือความแตกต่างระหว่าง Service, Async Task & Thread หากฉันไม่ผิดพวกเขาทั้งหมดจะใช้ทำบางสิ่งในพื้นหลัง ดังนั้นวิธีการตัดสินใจที่จะใช้และเมื่อใด
คำตอบ:
อาจเป็นไปได้ว่าคุณได้อ่านคำอธิบายเกี่ยวกับเอกสารเหล่านั้นแล้วฉันจะไม่ทำซ้ำพวกเขาแทนฉันจะพยายามตอบด้วยคำพูดของฉันเองหวังว่าพวกเขาจะช่วยคุณได้
บริการเป็นเหมือนกิจกรรม แต่ไม่มีส่วนต่อประสานผู้ใช้ อาจเป็นไปได้ว่าหากคุณต้องการดึงข้อมูลสภาพอากาศเช่นคุณจะไม่สร้างกิจกรรมว่างเปล่าสำหรับกิจกรรมนี้คุณจะต้องใช้บริการ
เธรดคือเธรดคุณอาจทราบแล้วจากส่วนอื่น ๆ คุณจำเป็นต้องรู้ว่าคุณไม่สามารถอัปเดต UI จากเธรด คุณต้องใช้ตัวจัดการสำหรับสิ่งนี้ แต่อ่านเพิ่มเติม
AsyncTask เป็นเธรดอัจฉริยะที่แนะนำให้ใช้ ฉลาดหลักแหลมเพราะมันสามารถช่วยได้ด้วยวิธีการและมีสามวิธีที่ทำงานบนเธรด UI ซึ่งเป็นสิ่งที่ดีในการอัปเดตองค์ประกอบ UI
ฉันกำลังใช้บริการ AsyncTasks บ่อยครั้ง ด้ายน้อยลงหรือไม่เลยเพราะฉันสามารถทำเกือบทุกอย่างด้วย AsyncTask
นี่คือคำตอบที่ง่ายที่สุดสำหรับคำถามของคุณ
เกลียว
เป็นหน่วยของการดำเนินการที่เรียกใช้ "ขนาน" กับเธรดหลักเป็นจุดสำคัญคุณไม่สามารถอัปเดตองค์ประกอบ UI จากเธรดใด ๆ ที่นี่ยกเว้นเธรดหลัก
AsyncTask
เป็นเธรดพิเศษซึ่งให้วิธีการช่วยเหลือแก่คุณในการอัปเดต UIดังนั้นโดยทั่วไปคุณสามารถอัปเดต UI ได้แม้ AsyncTask จะทำงานบนเธรดพื้นหลัง การจัดการการสื่อสารระหว่างกระบวนการไม่จำเป็นต้องทำอย่างชัดเจน
บริการ
แก้ปัญหาข้างต้นเพราะมันแยกจากกิจกรรมที่เรียกใช้เพื่อให้สามารถทำงานต่อไปได้แม้ว่ากิจกรรมจะถูกทำลายมันทำงานในเธรดหลัก (ระวัง ANR) ใช้บริการพื้นหลัง (ขยาย IntentService สร้างเธรดของผู้ปฏิบัติงานโดยอัตโนมัติ สำหรับคุณ) บริการเป็นเหมือนกิจกรรมที่ไม่มี UIเหมาะสำหรับงานที่ต้องใช้เวลานาน
ข้อมูลเพิ่มเติมไม่กี่ฉันต้องการมีคนบอกฉันไม่กี่วันที่ผ่านมา:
กรณีการใช้งานของฉันเป็นดังนี้: ฉันมีหนึ่งเธรดในพื้นที่ส่วนกลางที่เชื่อมต่อกับเซิร์ฟเวอร์และกิจกรรมที่แสดงผลลัพธ์ เมื่อผู้ใช้กดปุ่มโฮมกิจกรรมจะไปที่พื้นหลังและเริ่มบริการใหม่ บริการนี้จะอ่านผลลัพธ์จากเธรดและแสดงข้อมูลในพื้นที่แจ้งเตือนเมื่อจำเป็น ฉันไม่ต้องกังวลเกี่ยวกับระบบปฏิบัติการที่ทำลายกิจกรรมของฉันเพราะฉันรู้ว่าตราบใดที่บริการกำลังทำงานอยู่ระบบจะไม่ทำลายเธรด
ในระยะสั้นบริการสำหรับtime consuming tasks
, AsyncTaskสำหรับshort-lived tasks
, กระทู้เป็นstandard java construction
สำหรับหัวข้อ
จากมุมมองของนักพัฒนา:
เธรด : ใช้เพื่อเรียกใช้การตั้งค่าเป็นรหัสขนานกับเธรดหลัก แต่คุณไม่สามารถจัดการ UI ภายในเธรดได้ Handler
สำหรับสิ่งที่คุณจำเป็นต้องใช้ Hadler ทำงานเหมือนเธรด แต่สามารถจัดการ UI ได้เช่นกัน
ASyncTask : ใช้สำหรับจัดการงานเหล่านั้นที่คุณไม่สามารถทำงานกับเธรดหลักได้ ตัวอย่างเช่นคำขอ HTTP เป็นงานที่หนักมากที่ไม่สามารถดำเนินการกับเธรดหลักได้ดังนั้นคุณจัดการคำขอ HTTP ในการASyncTask
ทำงานแบบขนานกับเธรดหลักของคุณแบบอะซิงโครนัสในพื้นหลังมันมีวิธีการโทรกลับเล็กน้อยที่เกี่ยวข้อง เหตุการณ์ที่เกิดขึ้น
บริการ : เป็นกระบวนการพื้นหลัง มันถูกใช้เมื่อคุณต้องทำการประมวลผลบางอย่างที่ไม่มี UI ใด ๆ ที่เกี่ยวข้อง
Service
IntentService
จะไม่ทำงานที่จำเป็นในพื้นหลังเว้นแต่คุณจะใช้ หากคุณเริ่มต้นรูปแบบมาตรฐานService
จาก UiThread มันจะทำงานบน UiThread
Service
จะไม่ทำงานในกระบวนการอื่นตามค่าเริ่มต้น แต่ในกระบวนการแอปด้วยส่วนประกอบอื่น ๆ ดีกว่าที่จะบอกว่าService
จะทำงานในพื้นหลังของเธรดที่มันอาศัยอยู่ภายใน
การบริการเป็นเหมือนกิจกรรมที่ต้องใช้เวลานาน แต่ภารกิจ Async ช่วยให้เราสามารถทำการดำเนินการที่ยาวนาน / พื้นหลังและแสดงผลลัพธ์บนเธรด UI โดยไม่ต้องจัดการเธรด