การเพิ่มคะแนนให้กับคำตอบที่ยอมรับ:
ดูการใช้ IntentService ภายใน Android API เช่น:
public class SimpleWakefulService extends IntentService {
public SimpleWakefulService() {
super("SimpleWakefulService");
}
@Override
protected void onHandleIntent(Intent intent) { ...}
ในการสร้างองค์ประกอบ IntentService สำหรับแอปของคุณให้กำหนดคลาสที่ขยาย IntentService และภายในกำหนดวิธีที่จะแทนที่ onHandleIntent ()
นอกจากนี้โปรดดูซอร์สโค้ดของ IntentService ซึ่งเป็นตัวสร้างและวิธีวงจรชีวิตเช่น onStartCommand ...
@Override
public int More ...onStartCommand(Intent intent, int flags, int startId) {
onStart(intent, startId);
return mRedelivery ? START_REDELIVER_INTENT : START_NOT_STICKY;
}
บริการร่วมกัน AsyncTask เป็นหนึ่งในวิธีการที่ดีที่สุดสำหรับกรณีการใช้งานจำนวนมากที่มีน้ำหนักบรรทุกไม่มาก หรือเพียงแค่สร้างคลาสที่ขยาย IntentSerivce จาก Android เวอร์ชั่น 4.0 การดำเนินการเครือข่ายทั้งหมดควรอยู่ในกระบวนการพื้นหลังไม่เช่นนั้นแอปพลิเคชันคอมไพล์ / บิลด์ล้มเหลว แยกเธรดจาก UI คลาส AsyncTask จัดเตรียมหนึ่งในวิธีที่ง่ายที่สุดในการเริ่มงานใหม่จากเธรด UI สำหรับการอภิปรายเพิ่มเติมของหัวข้อนี้ดูโพสต์บล็อก
จากคู่มือนักพัฒนา Android :
IntentService เป็นคลาสพื้นฐานสำหรับบริการที่จัดการคำขอแบบอะซิงโครนัส (แสดงเป็น Intents) ตามต้องการ ลูกค้าส่งคำร้องขอผ่านการเรียก startService (Intent) บริการเริ่มต้นตามต้องการจัดการแต่ละเจตนาในทางกลับกันโดยใช้เธรดผู้ปฏิบัติงานและหยุดตัวเองเมื่อหมดงาน
รูปแบบการออกแบบที่ใช้ใน IntentService
: แพทเทิร์น "ตัวประมวลผลคิวงาน" นี้มักใช้เพื่อถ่ายโอนงานจากเธรดหลักของแอปพลิเคชัน คลาส IntentService มีอยู่เพื่อทำให้รูปแบบนี้ง่ายขึ้นและดูแลกลไก หากต้องการใช้ให้ขยาย IntentService และใช้ onHandleIntent (Intent) IntentService จะได้รับ Intents เปิดตัวเธรดผู้ปฏิบัติงานและหยุดบริการตามความเหมาะสม
คำขอทั้งหมดได้รับการจัดการในเธรดผู้ปฏิบัติงานเดียว - พวกเขาอาจใช้เวลานานเท่าที่จำเป็น (และจะไม่ปิดกั้นลูปหลักของแอปพลิเคชัน) แต่จะมีการประมวลผลคำขอเพียงครั้งเดียวในแต่ละครั้ง
คลาส IntentService จัดเตรียมโครงสร้างที่ไม่ซับซ้อนสำหรับการรันการดำเนินการบนเธรดพื้นหลังเดี่ยว สิ่งนี้ทำให้สามารถจัดการกับการดำเนินงานที่ยาวนานโดยไม่กระทบต่อการตอบสนองของส่วนต่อประสานผู้ใช้ของคุณ นอกจากนี้ IntentService ยังไม่ได้รับผลกระทบจากเหตุการณ์วงจรชีวิตส่วนติดต่อผู้ใช้ส่วนใหญ่ดังนั้นจึงยังคงทำงานในสถานการณ์ที่จะปิด AsyncTask
IntentService มีข้อ จำกัด เล็กน้อย:
ไม่สามารถโต้ตอบโดยตรงกับส่วนต่อประสานผู้ใช้ของคุณ ในการใส่ผลลัพธ์ใน UI คุณต้องส่งพวกเขาไปยังกิจกรรม คำของานทำงานตามลำดับ หากการดำเนินการกำลังทำงานใน IntentService และคุณส่งการร้องขออื่นคำขอนั้นจะรอจนกว่าการดำเนินการครั้งแรกจะเสร็จสิ้น การดำเนินการที่ทำงานบน IntentService ไม่สามารถถูกขัดจังหวะได้ อย่างไรก็ตามในกรณีส่วนใหญ่
IntentService เป็นวิธีที่ต้องการในการดำเนินการพื้นหลังอย่างง่าย
**
ห้องสมุดวอลเล่ย์
มีห้องสมุดชื่อvolley-library สำหรับการพัฒนาแอปพลิเคชั่นเครือข่าย android
ซอร์สโค้ดนั้นมีให้สำหรับสาธารณะใน GitHub
เอกสารประกอบอย่างเป็นทางการของ android สำหรับ แนวทางปฏิบัติที่ดีที่สุดสำหรับงานแบ็คกราวด์ : ช่วยให้เข้าใจบริการเจตนา, เธรด, ตัวจัดการ, บริการได้ดียิ่งขึ้น และการดำเนินการเครือข่าย
IntentService is used for short tasks (etc) and a service is for long ones
คุณอ่านมาจากที่ไหน