ฉันกำลังใช้ฟีเจอร์ที่คล้ายกับ DownloadManager ในแอปพลิเคชันที่ฉันกำลังพัฒนา ฉันใช้ AsyncTask เพื่อดันการดาวน์โหลดไปที่พื้นหลัง
AsyncTask นี้อยู่ในบริการที่ชื่อเช่น DownloadService
ซึ่งสร้างอินสแตนซ์ในกิจกรรมหนึ่งของฉัน ซึ่งหมายความว่าการดาวน์โหลดหลายรายการสามารถเริ่มต้นได้จากอินสแตนซ์ที่แตกต่างกันของกิจกรรม
สิ่งที่ฉันต้องการทำคือการมีกิจกรรมเฉพาะที่ฉันสามารถให้การดาวน์โหลดที่กำลังทำงานอยู่ทั้งหมดแสดงความคืบหน้าและมีปุ่มเพื่อหยุดชั่วคราวหรือดำเนินการต่อ ดาวน์โหลด
จะดึงอินสแตนซ์ที่ทำงานอยู่ของ AsyncTask ได้อย่างไร
คำตอบ (2)
ในกรณีที่คุณต้องการสิ่งนี้ คุณสามารถจัดเก็บ Async Tasks ทั้งหมดที่เริ่มต้นในบริการไว้ใน Array จากนั้นตรวจสอบสถานะด้วย http://developer.android.com/reference/android/os/AsyncTask.html#getStatus%28%29
หวังว่านี่จะช่วยได้!
person
Dimitris Makris
schedule
23.06.2012
สมมติว่าฉันสร้างอาร์เรย์นี้ที่คุณพูด ฉันจะเข้าถึงกิจกรรมดังกล่าวในกิจกรรมอื่นที่ไม่ใช่กิจกรรมที่สร้างขึ้นได้อย่างไร และฉันจะเพิ่มเข้าไปในกิจกรรมต่างๆ ได้อย่างไร?
- person 2hamed; 24.06.2012
แทนที่จะใส่ DownloadService
ไว้ในกิจกรรม ให้ใส่ไว้ในคลาส Application
ของแอปในฐานะสมาชิกของคลาสแทน เนื่องจากคลาสนี้จะมีอินสแตนซ์เพียงอินสแตนซ์เดียวต่อแอปพลิเคชัน จากนั้นคุณสามารถเรียกดูข้อมูลดังกล่าวได้ในกิจกรรมของคุณโดยโทร ((YourApplication)getApplication()).getDownloadService()
คุณจะต้อง:
- สร้างคลาสที่ขยาย Application เช่น YourApplication
- ประกาศในแท็ก
<application>
ของไฟล์ Manifest เป็นandroid:name="YourApplication"
- ใช้ในกิจกรรมของคุณโดยเรียกใช้
((YourApplication)getApplication()).someMethodToGetDownloadService()
person
Jeshurun
schedule
23.06.2012
อย่างที่ฉันบอกว่า
DownloadService
เป็นคลาสที่แยกจากกัน (ฉันไม่ได้เก็บมันไว้ในกิจกรรมของฉัน ฉันแค่ยกตัวอย่างมันไว้ตรงนั้น)
- person 2hamed; 24.06.2012
เยี่ยมยอดแล้วสร้างอินสแตนซ์ในคลาส Application ของคุณ ดึงข้อมูลในกิจกรรมและส่งงานไป จากนั้นคุณควรจะสามารถมีกิจกรรมความคืบหน้าที่คุณสามารถดึงงานที่กำลังทำงานอยู่ทั้งหมดและอนุญาตให้ดำเนินการได้
- person Jeshurun; 24.06.2012