คำถามติดแท็ก android-lifecycle

คำถามเกี่ยวกับเหตุการณ์ที่ระบบส่งต่อไปยังส่วนประกอบในช่วงชีวิตของพวกเขาในแอปพลิเคชัน Android ส่วนประกอบส่วนใหญ่มี LifeCycle เฉพาะที่กำหนดไว้ แท็กนี้ไม่ได้มีไว้เพื่อใช้เพียงอย่างเดียว: ใช้กับแท็ก [android-activity], [android-service] และ [android-broadcastreceiver]

22
วิธีเริ่มกิจกรรมใหม่เมื่อคลิกปุ่ม
ในแอปพลิเคชัน Android คุณจะเริ่มกิจกรรมใหม่ (GUI) อย่างไรเมื่อคลิกปุ่มในกิจกรรมอื่นและคุณส่งข้อมูลระหว่างกิจกรรมทั้งสองนี้อย่างไร

3
ความแตกต่างและการใช้งานของ onCreate (), onCreateView () และ onActivityCreated () เป็นชิ้นส่วน
อะไรคือความแตกต่างระหว่างonCreate(), onCreateView()และonActivityCreated()ในชิ้นส่วนและสิ่งที่พวกเขาแต่ละคนจะนำมาใช้สำหรับ?

18
เมื่อล็อกเอาต์ให้ล้างสแต็คประวัติกิจกรรมป้องกันปุ่ม "ย้อนกลับ" จากการเปิดกิจกรรมที่ลงชื่อเข้าใช้เท่านั้น
กิจกรรมทั้งหมดในแอปพลิเคชันของฉันต้องการให้ผู้ใช้ลงชื่อเข้าใช้เพื่อดู ผู้ใช้สามารถออกจากระบบได้เกือบทุกกิจกรรม นี่คือข้อกำหนดของแอปพลิเคชัน ที่จุดใด ๆ Activityหากผู้ใช้ล็อกเอาผมต้องการที่จะส่งให้ผู้ใช้เข้าสู่ระบบ ณ จุดนี้ฉันต้องการให้กิจกรรมนี้อยู่ด้านล่างของสแต็คประวัติเพื่อให้การกดปุ่ม "ย้อนกลับ" ส่งคืนผู้ใช้ไปยังหน้าจอหลักของ Android ฉันเคยเห็นคำถามนี้ถามสถานที่ที่แตกต่างกันไม่กี่ทั้งหมดตอบด้วยคำตอบที่คล้ายกัน (ที่ฉันร่างที่นี่) แต่ฉันต้องการที่จะก่อให้เกิดที่นี่เพื่อรวบรวมข้อเสนอแนะ ฉันได้ลองเปิดกิจกรรมการเข้าสู่ระบบโดยการตั้งค่าIntentสถานะFLAG_ACTIVITY_CLEAR_TOPที่ดูเหมือนว่าจะทำตามที่ระบุไว้ในเอกสาร แต่ไม่บรรลุเป้าหมายของฉันในการวางกิจกรรมการเข้าสู่ระบบที่ด้านล่างของสแต็คประวัติศาสตร์และป้องกันผู้ใช้จากการนำทางย้อนกลับ ไปยังกิจกรรมการลงชื่อเข้าใช้ที่เห็นก่อนหน้านี้ ฉันพยายามใช้android:launchMode="singleTop"กิจกรรมการเข้าสู่ระบบในรายการด้วย แต่สิ่งนี้ไม่บรรลุเป้าหมายของฉันเช่นกัน (และดูเหมือนว่าจะไม่มีผลกระทบต่อไป) ฉันเชื่อว่าฉันต้องล้างสแต็คประวัติหรือจบกิจกรรมที่เปิดก่อนหน้านี้ทั้งหมด ทางเลือกหนึ่งคือการมีonCreateสถานะเข้าสู่ระบบการตรวจสอบของแต่ละกิจกรรมและfinish()หากไม่ได้เข้าสู่ระบบ ฉันไม่ชอบตัวเลือกนี้เนื่องจากปุ่มย้อนกลับจะยังคงใช้งานได้นำทางกลับเป็นกิจกรรมที่ปิดตัวเอง ตัวเลือกถัดไปคือการเก็บรักษาLinkedListของการอ้างอิงถึงกิจกรรมที่เปิดอยู่ทั้งหมดที่สามารถเข้าถึงได้แบบคงที่จากทุกที่ (อาจใช้การอ้างอิงที่อ่อนแอ) เมื่อออกจากระบบฉันจะเข้าถึงรายการนี้และทำซ้ำกิจกรรมที่เปิดก่อนหน้านี้ทั้งหมดโดยเรียกใช้finish()แต่ละรายการ ฉันจะเริ่มใช้วิธีนี้ในไม่ช้า อย่างไรก็ตามฉันควรใช้Intentเล่ห์เหลี่ยมธงเพื่อบรรลุเป้าหมายนี้ ฉันมีความสุขเกินกว่าจะพบว่าฉันสามารถทำตามข้อกำหนดของแอปพลิเคชันของฉันได้โดยไม่ต้องใช้วิธีใดวิธีหนึ่งจากสองวิธีที่ฉันได้อธิบายไว้ข้างต้น มีวิธีในการทำสิ่งนี้ให้สำเร็จโดยใช้Intentหรือการตั้งค่ารายการหรือตัวเลือกที่สองของฉันการรักษาLinkedListกิจกรรมที่เปิดไว้เป็นตัวเลือกที่ดีที่สุดหรือไม่? หรือมีตัวเลือกอื่นที่ฉันสามารถมองเห็นได้อย่างสมบูรณ์?

9
แอปรีสตาร์ทแทนที่จะดำเนินการต่อ
หวังว่าใครบางคนสามารถช่วยฉันคิดออกถ้าไม่ได้แก้ปัญหาอย่างน้อยคำอธิบายสำหรับพฤติกรรม ปัญหา: ในอุปกรณ์บางตัวการกดไอคอนตัวเรียกใช้งานจะส่งผลให้งานปัจจุบันกลับมาทำงานต่อเมื่ออุปกรณ์ตัวอื่นส่งผลให้เกิดความตั้งใจในการเปิดตัวครั้งแรกที่เริ่มต้น ทำไมสิ่งนี้ถึงเกิดขึ้น รายละเอียด: เมื่อคุณกดปุ่ม "ไอคอนเปิด" แอปเริ่มทำงานตามปกติ - นั่นคือผมถือว่าเป็นเจตนาจะเปิดตัวที่มีชื่อของแรกของคุณActivityด้วยการกระทำและหมวดหมู่android.intent.action.MAIN android.intent.category.LAUNCHERอย่างไรก็ตามในกรณีนี้ไม่ได้: สำหรับอุปกรณ์ส่วนใหญ่หากคุณกดไอคอนตัวเรียกใช้งานหลังจากแอปทำงานอยู่กิจกรรมที่กำลังทำงานอยู่ในกระบวนการนั้นจะกลับมาทำงานต่อ ( ไม่ใช่เริ่มต้นActivity) มันดำเนินการต่อในลักษณะเดียวกับว่าคุณได้เลือกจาก "งานล่าสุด" ในเมนู OS นี่คือพฤติกรรมที่ฉันต้องการในทุกอุปกรณ์ อย่างไรก็ตามในอุปกรณ์อื่นที่เลือกมีพฤติกรรมที่แตกต่างกันเกิดขึ้น: บน Motorola Xoom, เมื่อคุณกดไอคอนตัวที่ App จะเสมอเริ่มเปิดตัวครั้งแรกActivityโดยไม่คำนึงถึงสิ่งที่กำลังทำงาน ฉันคิดว่าไอคอนตัวเรียกใช้เริ่มต้นด้วยเจตนา "เปิดตัว" บน Samsung Tab 2 เมื่อคุณกดไอคอนตัวเรียกใช้งานถ้าคุณเพิ่งติดตั้งแอพมันจะเปิดตัวครั้งแรกเสมอActivity(เหมือน Xoom) - อย่างไรก็ตามหลังจากคุณรีสตาร์ทอุปกรณ์หลังจากติดตั้งไอคอนตัวเรียกใช้จะแทน ดำเนินการแอปต่อ ฉันถือว่าอุปกรณ์เหล่านี้เพิ่ม "แอพที่ติดตั้ง" ลงในตารางการค้นหาเมื่อเริ่มต้นอุปกรณ์ซึ่งอนุญาตให้ไอคอนตัวเรียกใช้งานทำงานต่อได้อย่างถูกต้องหรือไม่ ฉันได้อ่านคำตอบหลายอย่างที่เสียงคล้ายกับปัญหาของฉัน แต่เพียงการเพิ่มandroid:alwaysRetainTaskState="true"หรือใช้launchMode="singleTop"ไปยังActivityไม่ได้คำตอบ แก้ไข: หลังจากการเปิดตัวแอพนี้ครั้งล่าสุดเราพบว่าพฤติกรรมนี้เริ่มเกิดขึ้นบนอุปกรณ์ทั้งหมดหลังจากการรีสตาร์ทครั้งแรก ซึ่งดูเหมือนจะบ้าสำหรับฉัน แต่เมื่อมองผ่านกระบวนการรีสตาร์ทฉันไม่พบสิ่งที่ผิดปกติ

8
กิจกรรมเดียวและชิ้นส่วนอื่น ๆ ทั้งหมด [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันคิดของการใช้หน้าจอเดียวกับActivityและ sreens อื่น ๆ ทั้งหมดที่มีและFragmentsmanaging all the fragments thru the activity มันเป็นความคิดที่ดีหรือไม่? และคำตอบของฉันคือไม่แต่ก็ยังต้องการทราบเพิ่มเติมเกี่ยวกับความคิดนี้อย่างชัดเจน ข้อดีและข้อเสียของความคิดคืออะไร บันทึก: กรุณาอย่าให้ลิงค์สำหรับชิ้นส่วนและกิจกรรม แก้ไข: นี่คือบางส่วนของแฟรกเมนต์และกิจกรรม: ข้อดี: แฟรกเมนต์มีวัตถุประสงค์เพื่อใช้กับกิจกรรมเป็นกิจกรรมย่อย แฟรกเมนต์ไม่ใช่สิ่งทดแทนกิจกรรม แฟรกเมนต์มีความหมายสำหรับการนำมาใช้ใหม่ (จำเป็นต้องรู้ในสิ่งที่สามารถนำมาใช้ซ้ำได้) แฟรกเมนต์เป็นวิธีที่ดีที่สุดในการเขียนโค้ดเพื่อรองรับทั้งแท็บเล็ตและโทรศัพท์ จุดด้อย: เราจำเป็นต้องใช้อินเทอร์เฟซเพื่อรับข้อมูลจากแฟรกเมนต์ สำหรับการสนทนาเราต้องแสดงให้ไกล ทำไมเราควรใช้เศษถ้าเราไม่ได้พิจารณาแท็บเล็ต? เวลาเริ่มต้นแตกต่างกันระหว่างกิจกรรมและส่วนใด

12
วิธีการกำจัดการประมวลผลคำอธิบายประกอบที่เพิ่มขึ้นได้รับการร้องขอคำเตือน?
ฉันเพิ่งเริ่มต้นใช้การพัฒนาแอนดรอยด์และพยายามใช้ห้องสมุดห้อง ตั้งแต่เมื่อวานฉันกำลังเผชิญกับข้อความเตือนนี้ w: [kapt] การประมวลผลคำอธิบายประกอบที่ร้องขอ แต่ปิดใช้งานการสนับสนุนเนื่องจากตัวประมวลผลต่อไปนี้ไม่ได้เพิ่ม: androidx.lifecycle.LifecycleProcessor (NON_INCREMENTAL), androidx.room.RoomProcessor (NON_INCREMENTAL) ฉันพยายามค้นคว้าและแก้ไข แต่ไม่สามารถหลีกเลี่ยงข้อผิดพลาดนี้ได้ที่นี่คือไฟล์ grale.build ของฉัน กรุณาแนะนำ / แนะนำสิ่งที่ฉันทำผิด apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' android { compileSdkVersion 29 buildToolsVersion "29.0.2" defaultConfig { applicationId "ps.room.bookkeeper" minSdkVersion 15 targetSdkVersion 29 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" javaCompileOptions …

8
ความแตกต่างระหว่าง onPause () และ onStop () ของ Android Activites คืออะไร?
จาก android doc ที่นี่http://developer.android.com/reference/android/app/Activity.htmlกล่าวว่าจะมีการเรียก 'กิจกรรมเข้าสู่เบื้องหน้า' onPause()และ 'กิจกรรมจะไม่ปรากฏอีกต่อไป' จะเรียกใช้onStop()จะเรียก 'กิจกรรมเข้าสู่เบื้องหน้า' ไม่เหมือนกับ 'กิจกรรมไม่ปรากฏอีกต่อไป' หรือไม่ คุณช่วยกรุณาบอกฉันว่าอะไรคือความแตกต่างระหว่างพวกเขา?

11
java.lang.IllegalStateException: แฟรกเมนต์ไม่ได้แนบกับกิจกรรม
ฉันไม่ค่อยได้รับข้อผิดพลาดนี้ขณะทำการเรียก API java.lang.IllegalStateException: Fragment not attached to Activity ฉันลองวางโค้ดด้านในisAdded()เพื่อตรวจสอบว่ามีการเพิ่มแฟรกเมนต์ให้กับกิจกรรมของมันหรือไม่ แต่ฉันก็ยังไม่ค่อยได้รับข้อผิดพลาดนี้ ฉันไม่เข้าใจว่าทำไมฉันยังได้รับข้อผิดพลาดนี้ ฉันจะป้องกันได้อย่างไร ข้อผิดพลาดในการแสดงของมันในบรรทัด - cameraInfo.setId(getResources().getString(R.string.camera_id)); ด้านล่างนี้คือตัวอย่างการเรียก api ที่ฉันกำลังทำ SAPI.getInfo(getActivity(), new APIResponseListener() { @Override public void onResponse(Object response) { cameraInfo = new SInfo(); if(isAdded()) { cameraInfo.setId(getResources().getString(R.string.camera_id)); cameraInfo.setName(getResources().getString(R.string.camera_name)); cameraInfo.setColor(getResources().getString(R.string.camera_color)); cameraInfo.setEnabled(true); } } @Override public void onError(VolleyError error) { mProgressDialog.setVisibility(View.GONE); if (error instanceof …

6
ฉันจะป้องกันไม่ให้ Android จับภาพหน้าจอเมื่อแอปของฉันไปที่พื้นหลังได้อย่างไร
แอพที่ฉันกำลังสร้างอยู่นั้นมีข้อกำหนดว่าแอพต้องป้องกันไม่ให้ระบบปฏิบัติการจับภาพหน้าจอของแอพเมื่อมันถูกส่งไปยังพื้นหลังเพื่อเหตุผลด้านความปลอดภัย วิธีนี้จะไม่สามารถเห็นหน้าจอที่ใช้งานล่าสุดเมื่อสลับระหว่างแอป ฉันวางแผนที่จะวางฟังก์ชั่นนี้ไว้ในวิธีการ onPause ของแอปพลิเคชันคลาส แต่ก่อนอื่นฉันต้องค้นหาวิธีที่ฉันสามารถใช้ฟังก์ชันนี้ได้ มีใครออกไปข้างนอกนั่นมีเงื่อนงำที่จะแก้ไขปัญหานี้ได้อย่างไร

5
เมื่อใดที่เรียกว่า onSaveInstanceState () และ onRestoreInstanceState ()
รูปต่อไปนี้ (จากเอกสารอย่างเป็นทางการ ) อธิบายวงจรชีวิตที่รู้จักกันดีของกิจกรรม Android: ในทางกลับกันเมื่อกิจกรรมถูกทำลายโดยระบบ (เช่นเนื่องจากจำเป็นต้องเรียกคืนหน่วยความจำ) สถานะของกิจกรรมบางครั้งจะถูกบันทึกและเรียกคืนโดยอัตโนมัติโดยใช้วิธีการonSaveInstanceState()และonRestoreInstanceState()ดังที่แสดงในรูปต่อไปนี้ (เช่นกัน จากเอกสารอย่างเป็นทางการ ): ฉันทราบดีว่าonSaveInstanceState()จะไม่ถูกเรียกเสมอไปเมื่อกิจกรรมกำลังจะถูกทำลาย ตัวอย่างเช่นหากถูกทำลายเนื่องจากผู้ใช้กดปุ่ม "ย้อนกลับ" สถานะกิจกรรมจะไม่ถูกเก็บรักษาไว้ แต่ในกรณีที่สถานะถูกบันทึกและกู้คืนและonSaveInstanceState()/ onRestoreInstanceState()ได้รับการเรียกมันถูกเรียกเมื่อใด ยกตัวอย่างเช่นตามตัวเลขดังกล่าวข้างต้นonRestoreInstanceState()อาจจะเรียกว่าก่อนonStart()หรือหลังonStart()แต่ก่อนหรือหลังonResume() ในทำนองเดียวกันเป็นไปได้หลายที่มีอยู่สำหรับonResume() onSaveInstanceState()พวกเขาเรียกว่าเมื่อไหร่กันแน่? ตามหลักการแล้วสิ่งที่ฉันต้องการคือดูแผนภาพรวมที่แสดงสถานะวงจรชีวิตของกิจกรรมและวิธีการบันทึก / กู้คืนหากมีอยู่

6
ประโยชน์ของการใช้ Fragments ใน Android แทนที่จะเป็น Views คืออะไร
เมื่อมีการพัฒนาสำหรับAndroidคุณสามารถตั้งค่าเป้าหมายของคุณ (หรืออย่างน้อย) SDK 4 (API 1.6) และเพิ่มแพคเกจเข้ากันได้ของหุ่นยนต์ (v4) Fragmentsเพื่อเพิ่มการสนับสนุนสำหรับ เมื่อวานนี้ฉันทำสิ่งนี้และนำFragmentsไปใช้เพื่อแสดงภาพข้อมูลจากคลาสที่กำหนดเองได้สำเร็จ คำถามของฉันคือสิ่งนี้มีประโยชน์อย่างไรในการใช้Fragmentsเมื่อเทียบกับเพียงแค่รับ View จากออบเจ็กต์ที่กำหนดเองและยังรองรับ API 1.5 ตัวอย่างเช่นฉันมีคลาส Foo.java: public class Foo extends Fragment { /** Title of the Foo object*/ private String title; /** A description of Foo */ private String message; /** Create a new Foo * @param title * …

4
วงจรชีวิตของวัตถุคงที่ของ Android
ฉันกำลังสร้างแอปพลิเคชันการค้นหาเหตุการณ์เราตั้งเกณฑ์การค้นหาจากหน้าจอหนึ่งเติมในหน้าจออื่นจากนั้นผู้ใช้สามารถแก้ไขเกณฑ์การค้นหาจากหน้าจอที่ 3 และไปที่หน้าจอที่ 4 เพื่อให้บรรลุภารกิจข้างต้นฉันใช้วัตถุคงที่ซึ่งจำค่ารอบ ๆ แอปพลิเคชันและฉันไม่จำเป็นต้องทำอะไรเพิ่มเติม แต่ฉันกลัวถ้าเกี่ยวกับวงจรชีวิตของวัตถุคงที่ใน Android หากหน่วยความจำต่ำพบว่า android ลบวัตถุคงที่ ??? เนื่องจาก Android รองรับการทำงานแบบมัลติทาสกิ้งหากผู้ใช้เปลี่ยนไปใช้แอปพลิเคชันอื่นและเมื่อผู้ใช้กลับมาแอปพลิเคชันเริ่มทำงานบ้าวัตถุคงที่จะถูกลบออกเมื่อทำงานหลายอย่างหรือไม่? คิดยังไง ?? และยังแนะนำให้ถือวัตถุคงที่ด้วยวิธี singleton เป็นแนวทางที่ดีกว่า ???

7
ลำดับที่ถูกต้องของการเรียกเมธอด superclass ในเมธอด onPause, onStop และ onDestroy คืออะไร และทำไม?
ฉันเพิ่งอ่านไซต์นักพัฒนาซอฟต์แวร์ Android โดยรีเฟรชวงจรชีวิตของกิจกรรมและในแต่ละตัวอย่างโค้ดมีความคิดเห็นข้างเมธอดระดับสูงที่ระบุว่า "เรียกเมธอด superclass ก่อนเสมอ" แม้ว่าสิ่งนี้จะสมเหตุสมผลในครึ่งรอบการสร้าง: onCreate, onStart และ onResume แต่ฉันก็สับสนเล็กน้อยว่าขั้นตอนที่ถูกต้องในครึ่งรอบการทำลายคืออะไร: onPause, onStop, onDestroy ทำลายทรัพยากรเฉพาะของอินสแตนซ์ก่อนก่อนที่จะทำลายทรัพยากรระดับสูงที่ทรัพยากรเฉพาะของอินสแตนซ์อาจขึ้นอยู่กับความสมเหตุสมผลไม่ใช่ในทางกลับกัน แต่ความคิดเห็นแนะนำเป็นอย่างอื่น ฉันขาดอะไรไป? แก้ไข : เนื่องจากผู้คนดูเหมือนจะสับสนเกี่ยวกับเจตนาในคำถามสิ่งที่ฉันต้องการทราบคือข้อใดต่อไปนี้ถูกต้อง? และทำไม ? 1. Google แนะนำ @Override protected void onStop() { super.onStop(); // Always call the superclass method first //my implementation here } 2. วิธีอื่น ๆ @Override protected void onStop() …

8
วิธีใช้ onResume ()?
ใครช่วยยกตัวอย่างที่ใช้onResume()ใน Android ให้หน่อยได้ไหม นอกจากนี้หากฉันต้องการเริ่มกิจกรรมใหม่เมื่อสิ้นสุดการเรียกใช้งานอื่นจะดำเนินการด้วยวิธีใด - onCreate()หรือonResume()? และถ้าต้องการอัปเดตข้อมูลจะใส่อย่างไร onResume()?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.