ในที่สุดนี้จะได้รับคำถามของคุณ แต่ก่อนอื่นฉันต้องการที่จะแก้ไขปัญหาจำนวนมากที่คุณแสดงความคิดเห็นที่หลากหลายของคุณกับคำตอบต่าง ๆ ที่ได้รับแล้วในขณะที่เขียนนี้ ฉันไม่มีความตั้งใจที่จะเปลี่ยนใจ - แต่สิ่งเหล่านี้อยู่ที่นี่สำหรับคนอื่น ๆ ที่มาอ่านโพสต์นี้ในอนาคต
ประเด็นก็คือฉันไม่สามารถอนุญาตให้ Android ระบุว่าแอพของฉันจะถูกยกเลิกเมื่อใด ที่จะต้องเป็นทางเลือกของผู้ใช้
ผู้คนนับล้านมีความสุขอย่างสมบูรณ์แบบกับโมเดลที่สภาพแวดล้อมปิดแอปพลิเคชันตามต้องการ ผู้ใช้เหล่านั้นไม่ได้คิดเกี่ยวกับ "ยุติ" แอพ Android มากกว่าที่พวกเขาคิดเกี่ยวกับ "ยกเลิก" หน้าเว็บหรือ "ยุติ" เทอร์โม
ผู้ใช้ iPhone มีวิธีการเดียวกันมากในการกดปุ่ม iPhone ไม่จำเป็นต้อง "รู้สึก" เหมือนแอพที่ถูกยกเลิกเนื่องจากแอพของ iPhone จำนวนมากเลือกที่ที่ผู้ใช้ทิ้งไว้แม้ว่าแอปจะถูกปิดจริงๆ (ตั้งแต่ iPhone เท่านั้น อนุญาตให้แอปของบุคคลที่สามหนึ่งรายการพร้อมกันในปัจจุบัน)
ดังที่ฉันได้กล่าวไว้ข้างต้นมีหลายสิ่งที่เกิดขึ้นในแอปของฉัน (ข้อมูลถูกผลักดันไปยังอุปกรณ์
ฉันไม่ทราบว่า "รายการที่มีงานที่ควรมี" หมายถึงอะไร แต่ "ข้อมูลที่ถูกผลักไปยังอุปกรณ์" เป็นนิยายที่น่าพอใจและไม่ควรทำโดยกิจกรรมใด ๆ ใช้งานที่กำหนดเวลาไว้ (ผ่านAlarmManager
) เพื่ออัปเดตข้อมูลของคุณเพื่อความน่าเชื่อถือสูงสุด
ผู้ใช้ของเราเข้าสู่ระบบและไม่สามารถทำเช่นนั้นได้ทุกครั้งที่พวกเขาได้รับโทรศัพท์และ Android ตัดสินใจที่จะฆ่าแอพ
มีแอปพลิเคชั่น iPhone และ Android มากมายที่จัดการกับสิ่งนี้ โดยปกติจะเป็นเพราะพวกเขาเก็บข้อมูลรับรองการเข้าสู่ระบบแทนที่จะบังคับให้ผู้ใช้เข้าสู่ระบบทุกครั้งด้วยตนเอง
ตัวอย่างเช่นเราต้องการตรวจสอบการอัปเดตเมื่อออกจากแอปพลิเคชัน
นั่นเป็นข้อผิดพลาดในระบบปฏิบัติการใด ๆ สำหรับสิ่งที่คุณรู้เหตุผลที่แอปพลิเคชันของคุณกำลัง "ออก" เป็นเพราะระบบปฏิบัติการปิดตัวลงแล้วกระบวนการอัปเดตของคุณจะล้มเหลวในช่วงกลางสตรีม โดยทั่วไปนั่นไม่ใช่สิ่งที่ดี ตรวจสอบการอัปเดตเมื่อเริ่มหรือตรวจสอบการอัปเดตแบบอะซิงโครนัสทั้งหมด (เช่นผ่านงานที่กำหนด) ไม่เคยออก
ความคิดเห็นบางข้อแนะนำว่าการกดปุ่มย้อนกลับไม่ได้ฆ่าแอพเลย (ดูลิงก์ในคำถามของฉันด้านบน)
การกดปุ่มย้อนกลับไม่ได้ "ฆ่าแอพ" กิจกรรมจะเสร็จสิ้นบนหน้าจอเมื่อผู้ใช้กดปุ่ม BACK
ควรสิ้นสุดเมื่อผู้ใช้ต้องการยกเลิกเท่านั้น - ไม่เคยมีวิธีอื่นใด หากคุณไม่สามารถเขียนแอพที่มีพฤติกรรมเช่นนั้นใน Android ได้ฉันคิดว่า Android ไม่สามารถใช้สำหรับการเขียนแอพจริง = (
จากนั้นไม่สามารถใช้งานเว็บแอปพลิเคชันได้ หรือWebOSถ้าฉันเข้าใจโมเดลของพวกเขาถูกต้อง (ยังไม่มีโอกาสได้เล่นด้วย) ในสิ่งเหล่านี้ผู้ใช้จะไม่ "ยุติ" สิ่งใดเลย - พวกเขาเพิ่งจากไป iPhone นั้นแตกต่างกันเล็กน้อยซึ่งในปัจจุบันมีเพียงสิ่งเดียวเท่านั้นที่อนุญาตให้เรียกใช้ในแต่ละครั้ง
มีวิธีที่ฉันจะออกจากแอปพลิเคชันจริง ๆ หรือไม่?
ตามที่ทุกคนบอกคุณผู้ใช้ (ผ่านทาง BACK) หรือรหัสของคุณ (ผ่านfinish()
) สามารถปิดกิจกรรมที่กำลังดำเนินอยู่ โดยทั่วไปผู้ใช้ไม่ต้องการสิ่งใดสำหรับแอปพลิเคชันที่เขียนอย่างถูกต้องมากกว่าที่พวกเขาต้องการตัวเลือก "ออกจาก" สำหรับการใช้งานเว็บแอปพลิเคชัน
ไม่มีสองสภาพแวดล้อมของแอปพลิเคชันเหมือนกันตามคำจำกัดความ ซึ่งหมายความว่าคุณสามารถเห็นแนวโน้มในสภาพแวดล้อมเมื่อมีสิ่งใหม่เกิดขึ้นและอื่น ๆ ถูกฝังอยู่
ตัวอย่างเช่นมีการเคลื่อนไหวเพิ่มขึ้นเพื่อพยายามกำจัดความคิดของ "ไฟล์" เว็บแอพพลิเคชั่นส่วนใหญ่ไม่บังคับให้ผู้ใช้นึกถึงไฟล์ต่างๆ โดยทั่วไปแล้วแอพของ iPhone จะไม่บังคับให้ผู้ใช้นึกถึงไฟล์ต่างๆ แอพ Android มักจะไม่บังคับให้ผู้ใช้นึกถึงไฟล์ต่างๆ และอื่น ๆ
ในทำนองเดียวกันมีการเคลื่อนไหวที่เพิ่มขึ้นเพื่อพยายามกำจัดความคิดของ "ยุติ" แอพ แอปพลิเคชั่นเว็บส่วนใหญ่ไม่ได้บังคับให้ผู้ใช้ออกจากระบบ แต่เป็นการออกจากระบบโดยปริยายหลังจากผู้ใช้ไม่มีกิจกรรม สิ่งเดียวกันกับ Android และ iPhone (และอาจเป็น WebOS)
สิ่งนี้ต้องการความสำคัญในการออกแบบแอปพลิเคชันมากขึ้นโดยมุ่งเน้นไปที่เป้าหมายทางธุรกิจและไม่ยึดติดกับรูปแบบการใช้งานที่เชื่อมโยงกับสภาพแวดล้อมของแอปพลิเคชันก่อนหน้า นักพัฒนาที่ขาดเวลาหรือความชอบในการทำเช่นนี้จะหงุดหงิดกับสภาพแวดล้อมที่ใหม่กว่าซึ่งทำลายโมเดลจิตที่มีอยู่ นี่ไม่ใช่ความผิดของสภาพแวดล้อมใด ๆ เลยยิ่งไปกว่านั้นมันเป็นความผิดของภูเขาสำหรับพายุที่ไหลรอบมันมากกว่าผ่านมัน
ตัวอย่างเช่นสภาพแวดล้อมการพัฒนาบางอย่างเช่นHypercardและ Smalltalk มีแอปพลิเคชันและเครื่องมือในการพัฒนาร่วมกันในการตั้งค่าเดียว แนวคิดนี้ไม่ได้จับอะไรมากนอกส่วนขยายภาษาไปยังแอป (เช่นVBAในExcel , Lisp ใน AutoCAD ) นักพัฒนาซอฟต์แวร์ที่มาพร้อมกับโมเดลจิตที่สันนิษฐานว่ามีเครื่องมือการพัฒนาอยู่ในแอพดังนั้นจึงต้องเปลี่ยนโมเดลหรือ จำกัด ตัวเองให้อยู่ในสภาพแวดล้อมที่โมเดลของพวกเขาจะเป็นจริง
ดังนั้นเมื่อคุณเขียน:
นอกเหนือจากสิ่งยุ่ง ๆ อื่น ๆ ที่ฉันค้นพบแล้วฉันคิดว่าการพัฒนาแอพของเราสำหรับ Android จะไม่เกิดขึ้น
นั่นจะเป็นสิ่งที่ดีที่สุดสำหรับคุณในตอนนี้ ในทำนองเดียวกันฉันจะแนะนำให้คุณพยายามพอร์ตแอปพลิเคชันของคุณไปยังเว็บเนื่องจากปัญหาเดียวกันกับที่คุณรายงานกับ Android คุณจะพบในแอปพลิเคชันบนเว็บเช่นกัน (เช่นไม่มีการ "ยุติ") หรือตรงกันข้ามสักวันหนึ่งถ้าคุณทำพอร์ตแอปของคุณไปยังเว็บที่คุณอาจพบว่าการไหลของแอพลิเคชันเว็บอาจจะเป็นที่การแข่งขันที่ดีกว่าสำหรับ Android, และคุณสามารถทบทวนพอร์ต Android ในช่วงเวลานั้น