App ไม่ยอมตาย ทำไงดีครับ Home Forums General Android Application Development App ไม่ยอมตาย ทำไงดีครับ SekRanger / Reader Posted on April 22, 2011 at 1:20 am Share Tweet Line App ที่ผมพัฒนาขึ้นมาหลังจากที่เราปิดไปแล้ว มันยังคงค้างอยู่ที่หน้า Running ใน Manage Apps อ่ะครับมีคำอธิบายมั้ยครับ ว่าเป็นเพราะอะไร และวิธีแก้มีหรือไม่ไม่อยากใช้ System.exit(0) ครับ 18 Replies zymbian / Reader Posted on April 22, 2011 at 10:01 pmผมใช้ kill process เลยครับandroid.os.Process.killProcess(android.os.Process.myPid());หรือท่านอื่นมีวิธีที่ดีกว่านี้แนะนำด้วยครับ รอฟังเช่นกัน🙂 SekRanger / Reader Posted on April 24, 2011 at 7:04 amอันนี้คล้ายๆ System.exit(0) ครับอย่างไรก็ตาม ขอบคุณครับ ได้รู้จักวิธีใหม่ๆ อีกวิธีนึง zhugeliang / Reader Posted on April 24, 2011 at 4:24 amSystem.runFinalizersOnExit(true) SekRanger / Reader Posted on April 24, 2011 at 7:05 amอันนี้ลองแล้วครับ แต่ยังเป็นแบบเดิมเลย คือยังไม่ยอมตายง่ายๆ หรือว่ามันเป็นอมตะ?ขอบคุณครับ zhugeliang / Reader Posted on April 25, 2011 at 4:29 amผมก้อสงสัยปัญหานี้อยู่เหมือนกันครับที่ใช้จริงๆก้อ System.exit(0); ถ้าเรา finish(); ทุกๆ Activity ที่เราเปิดจะได้มั๊ยครับ SekRanger / Reader Posted on April 25, 2011 at 5:15 amfinish() ทุก Activity ผมลองแล้วครับ runFinalizeOnExit() ทุก Activity ก็ลองแล้วครับลองมาหลายแบบยังไม่เห็นผล แต่ System.exit(0) ที่ Root Activity ตัวเดียวอยู่นะแต่มันห้วนๆ ยังไงไม่รุ – – zhugeliang / Reader Posted on April 25, 2011 at 5:40 pm System.exit(0); มันwork ครับ แต่มันจะไม่รองรับการ เปิดปิด database แล้วก้อ Service บางอย่างอ่ะครับ มันห้วนๆไปจริงๆ SekRanger / Reader Posted on April 25, 2011 at 6:27 pmผมหาข้อมูลดูจากหลายๆ เว็บแล้วเค้าก็ไม่แนะนำครับเค้าบอกว่ามันเป็นที่ OS neomancer / Reader Posted on May 13, 2011 at 12:11 amแล้วจะ ฆ่ามันทิ้งทำไมหร๋อครับ โดยปกติ ตัว Android OS จะไม่ปิด app ไปก่อน จะยังเก็บ app นั้นๆ ไว้ในหน่วยความจำก่อน เพื่อว่าผู้ใช้ต้องการกลับมาใช้จะได้เปิดขึ้นได้เร็วทันใจ Novice_android / Reader Posted on May 16, 2011 at 2:08 amฟอเเมตเครื่องไปเลยครับ ตายสนิท อิอิ(ล้อเล่นนะครับ^^) codemixer / Reader Posted on May 21, 2011 at 12:24 amมี thread รันค้างอยู่รึเปล่าครับ ต้องทำให้ thread นั้นตายก่อนออกจากโปรแกรม tee_ptk / Reader Posted on May 29, 2011 at 7:28 amเข้าไป stop มัน ใน running program ก้อน่าจะหยุดนะคับ ไม่งั้นก้อ uninstall และ delete data file ทิ้งไปเลย ตายชัวร์ …อิอิ devmonkey / Reader Posted on June 30, 2011 at 11:54 pmเป็น feature ของ android OS ครับเขาบอกว่า memory เหลือทิ้งไว้เปล่าๆก็ไม่มีประโยชน์ ดังนั้นจึงให้ memory เก็บ app ต่างๆที่ run ล่าสุดเอาไว้ก่อน เผื่อโดน start ขึ้นมาใหม่จะได้เอามาใช้ได้เลย จนกว่า app อื่นต้องการจะใช้ memory แล้วไม่พอ จึงจะทำการปิดตัวที่นะจะโดนใช้น้อยสุดลงไปครับ Base / Reader Posted on September 7, 2011 at 11:02 pmคุณลองๆๆ@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { moveTaskToBack(true); return true; } return super.onKeyDown(keyCode, event); }ขอบคุณครับ SekRanger / Reader Posted on September 7, 2011 at 11:26 pmแบบนั้น App ไม่ตายครับ แค่เปลี่ยนไปทำงานเป็น background process newnhons / Reader Posted on September 23, 2011 at 7:06 amไม่ได้ครับ ต้อง force close ที่ application manager หรือ app ที่ kill process SekRanger / Reader Posted on September 28, 2011 at 4:55 pmเอาเป็นวิธีการเขียนโปรแกรมสิครับ SekRanger / Reader Posted on September 28, 2011 at 4:57 pmตอนนี้ไม่สนแล้วครับว่ามันจะตายหรือไม่ตาย ในเมื่อแอพฯ ของแอนดรอยด์ตัวที่มาจากกูเกิลเองมันยังไม่ยอมตาย แล้วเราจะไปสนทำไมวิศวกรของกูเกิลบอกว่ามันเป็นฟีเจอร์นะครับ แต่พอดีว่าบางเครื่อง RAM มันน้อยน่ะครับคุณวิศวกร ถ้าเข้าไปคาอยู่ในเมมสัก 10 แอพฯ RAM ไม่เกลี้ยงหมดเหรอ (วะ) ครับ
ผมใช้ kill process เลยครับ
android.os.Process.killProcess(android.os.Process.myPid());
หรือท่านอื่นมีวิธีที่ดีกว่านี้แนะนำด้วยครับ รอฟังเช่นกัน
🙂
อันนี้คล้ายๆ System.exit(0) ครับ
อย่างไรก็ตาม ขอบคุณครับ ได้รู้จักวิธีใหม่ๆ อีกวิธีนึง
System.runFinalizersOnExit(true)
อันนี้ลองแล้วครับ แต่ยังเป็นแบบเดิมเลย คือยังไม่ยอมตายง่ายๆ หรือว่ามันเป็นอมตะ?
ขอบคุณครับ
ผมก้อสงสัยปัญหานี้อยู่เหมือนกันครับที่ใช้จริงๆก้อ System.exit(0); ถ้าเรา finish(); ทุกๆ Activity ที่เราเปิดจะได้มั๊ยครับ
finish() ทุก Activity ผมลองแล้วครับ
runFinalizeOnExit() ทุก Activity ก็ลองแล้วครับ
ลองมาหลายแบบยังไม่เห็นผล แต่ System.exit(0) ที่ Root Activity ตัวเดียวอยู่นะ
แต่มันห้วนๆ ยังไงไม่รุ – –
System.exit(0); มันwork ครับ แต่มันจะไม่รองรับการ เปิดปิด database แล้วก้อ Service บางอย่างอ่ะครับ มันห้วนๆไปจริงๆ
ผมหาข้อมูลดูจากหลายๆ เว็บแล้วเค้าก็ไม่แนะนำครับ
เค้าบอกว่ามันเป็นที่ OS
แล้วจะ ฆ่ามันทิ้งทำไมหร๋อครับ โดยปกติ ตัว Android OS จะไม่ปิด app ไปก่อน จะยังเก็บ app นั้นๆ ไว้ในหน่วยความจำก่อน เพื่อว่าผู้ใช้ต้องการกลับมาใช้จะได้เปิดขึ้นได้เร็วทันใจ
ฟอเเมตเครื่องไปเลยครับ ตายสนิท อิอิ
(ล้อเล่นนะครับ^^)
มี thread รันค้างอยู่รึเปล่าครับ
ต้องทำให้ thread นั้นตายก่อนออกจากโปรแกรม
เข้าไป stop มัน ใน running program ก้อน่าจะหยุดนะคับ ไม่งั้นก้อ uninstall และ delete data file ทิ้งไปเลย ตายชัวร์ …อิอิ
เป็น feature ของ android OS ครับ
เขาบอกว่า memory เหลือทิ้งไว้เปล่าๆก็ไม่มีประโยชน์ ดังนั้นจึงให้ memory เก็บ app ต่างๆที่ run ล่าสุดเอาไว้ก่อน เผื่อโดน start ขึ้นมาใหม่จะได้เอามาใช้ได้เลย จนกว่า app อื่นต้องการจะใช้ memory แล้วไม่พอ จึงจะทำการปิดตัวที่นะจะโดนใช้น้อยสุดลงไปครับ
คุณลองๆๆ
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
moveTaskToBack(true);
return true;
}
return super.onKeyDown(keyCode, event);
}
ขอบคุณครับ
แบบนั้น App ไม่ตายครับ แค่เปลี่ยนไปทำงานเป็น background process
ไม่ได้ครับ ต้อง force close ที่ application manager หรือ app ที่ kill process
เอาเป็นวิธีการเขียนโปรแกรมสิครับ
ตอนนี้ไม่สนแล้วครับว่ามันจะตายหรือไม่ตาย ในเมื่อแอพฯ ของแอนดรอยด์ตัวที่มาจากกูเกิลเองมันยังไม่ยอมตาย แล้วเราจะไปสนทำไม
วิศวกรของกูเกิลบอกว่ามันเป็นฟีเจอร์นะครับ แต่พอดีว่าบางเครื่อง RAM มันน้อยน่ะครับคุณวิศวกร ถ้าเข้าไปคาอยู่ในเมมสัก 10 แอพฯ RAM ไม่เกลี้ยงหมดเหรอ (วะ) ครับ