คำถามติดแท็ก dagger-2

4
ส่วนประกอบย่อยของ Dagger 2 เทียบกับการพึ่งพาส่วนประกอบ
plus()วิธีการของ Dagger 1 เป็นสิ่งที่ฉันใช้บ่อยในแอปพลิเคชันก่อนหน้านี้ดังนั้นฉันจึงเข้าใจสถานการณ์ที่คุณอาจต้องการมีส่วนประกอบย่อยที่สามารถเข้าถึงการเชื่อมโยงกราฟพาเรนต์ได้อย่างเต็มที่ การใช้การพึ่งพาองค์ประกอบแทนการพึ่งพาองค์ประกอบย่อยจะเป็นประโยชน์ในสถานการณ์ใดและเพราะเหตุใด
138 dagger  dagger-2 

1
อะไรเป็นตัวกำหนดวงจรชีวิตของส่วนประกอบ (กราฟวัตถุ) ใน Dagger 2
ฉันพยายามพันหัวของฉันรอบขอบเขตใน Dagger 2 โดยเฉพาะวงจรชีวิตของกราฟที่กำหนดขอบเขต คุณจะสร้างส่วนประกอบที่จะล้างเมื่อคุณออกจากขอบเขตได้อย่างไร ในกรณีของแอปพลิเคชัน Android โดยใช้ Dagger 1.x โดยทั่วไปคุณจะมีขอบเขตรูทที่ระดับแอปพลิเคชันซึ่งคุณจะขยายเพื่อสร้างขอบเขตย่อยในระดับกิจกรรม public class MyActivity { private ObjectGraph mGraph; public void onCreate() { mGraph = ((MyApp) getApplicationContext()) .getObjectGraph() .plus(new ActivityModule()) .inject(this); } public void onDestroy() { mGraph = null; } } ขอบเขตย่อยมีอยู่ตราบเท่าที่คุณยังคงอ้างอิงอยู่ซึ่งในกรณีนี้คือวงจรชีวิตของกิจกรรมของคุณ การทิ้งข้อมูลอ้างอิงใน onDestroy ทำให้มั่นใจได้ว่ากราฟที่กำหนดขอบเขตนั้นไม่มีค่าใช้จ่ายในการเก็บขยะ แก้ไข Jesse Wilson เพิ่งโพสต์mea culpa Dagger …
134 java  dagger-2  lifecycle 

22
ข้อผิดพลาด: ประเภทของโปรแกรมมีอยู่แล้ว: android.support.design.widget.CoordinatorLayout $ Behavior
ฉันได้รับข้อผิดพลาดต่อไปนี้ขณะสร้างโครงการ ไม่ได้ใช้ CoordinatorLayout ในโครงการนี้ เพิ่งเพิ่มเป็นการพึ่งพาใน build.gradle: ฉันใช้ Android Studio 3.2 Canary 4 LogCat AGPBI: {"ชนิด": "ข้อผิดพลาด", "ข้อความ": "ชนิดของโปรแกรมมีอยู่แล้ว: android.support.design.widget.CoordinatorLayout $ พฤติกรรม", "แหล่งที่มา": [{}], "เครื่องมือ": "D8" }: app: transformDexArchiveWithExternalLibsDexMergerForDebug FAILED FAILURE: Build ล้มเหลวด้วยข้อยกเว้น * เกิดข้อผิดพลาด: การดำเนินการล้มเหลวสำหรับงาน ': แอป: transformDexArchiveWithExternalLibsDexMergerForDebug' com.android.builder.dexing.DexArchiveMergerException: เกิดข้อผิดพลาดขณะผสานรวมคลังข้อมูล dex: /windows/Other/app/build/intermediates/transforms/dexBuilder/debug/0.jar, / windows / อื่น ๆ / app / …

2
จะตั้งค่า DAGGER dependency injection ตั้งแต่เริ่มต้นในโครงการ Android ได้อย่างไร
วิธีใช้ Dagger? วิธีกำหนดค่า Dagger ให้ทำงานในโครงการ Android ของฉัน ฉันต้องการใช้ Dagger ในโปรเจ็กต์ Android ของฉัน แต่ฉันรู้สึกสับสน แก้ไข: Dagger2 ออกตั้งแต่ 2015 04 15 ด้วยและมันก็ยิ่งสับสน! [คำถามนี้เป็น "ต้นขั้ว" ที่ฉันเพิ่มเข้าไปในคำตอบเมื่อได้เรียนรู้เพิ่มเติมเกี่ยวกับ Dagger1 และเรียนรู้เพิ่มเติมเกี่ยวกับ Dagger2 คำถามนี้เป็นแนวทางมากกว่า "คำถาม"]

14
วิธีรับ Context ใน Android MVVM ViewModel
ฉันพยายามใช้รูปแบบ MVVM ในแอป Android ของฉัน ฉันได้อ่านแล้วว่า ViewModels ไม่ควรมีรหัสเฉพาะของ Android (เพื่อให้การทดสอบง่ายขึ้น) อย่างไรก็ตามฉันต้องใช้บริบทสำหรับสิ่งต่างๆ (การรับทรัพยากรจาก xml การกำหนดค่าเริ่มต้น ฯลฯ ) วิธีที่ดีที่สุดในการทำคืออะไร? ฉันเห็นว่าAndroidViewModelมีการอ้างอิงถึงบริบทของแอปพลิเคชัน แต่มีรหัสเฉพาะของ Android ดังนั้นฉันไม่แน่ใจว่าควรอยู่ใน ViewModel หรือไม่ รวมถึงสิ่งเหล่านั้นในกิจกรรมวงจรชีวิตของกิจกรรมด้วย แต่ฉันใช้กริชเพื่อจัดการขอบเขตของส่วนประกอบดังนั้นฉันไม่แน่ใจว่าจะส่งผลอย่างไร ฉันยังใหม่กับรูปแบบ MVVM และ Dagger ดังนั้นขอขอบคุณทุกความช่วยเหลือ!

5
กริช - เราควรสร้างส่วนประกอบและโมดูลสำหรับแต่ละกิจกรรม / ชิ้นส่วน
ฉันทำงานกับ dagger2 มาระยะหนึ่งแล้ว และฉันก็สับสนในการสร้างส่วนประกอบ / โมดูลของตัวเองสำหรับแต่ละกิจกรรม / ส่วนย่อย โปรดช่วยฉันชี้แจงสิ่งนี้: ตัวอย่างเช่นเรามีแอปและแอปมีประมาณ 50 หน้าจอ เราจะใช้โค้ดตามรูปแบบ MVP และ Dagger2 สำหรับ DI สมมติว่าเรามี 50 กิจกรรมและ 50 ผู้นำเสนอ ในความคิดของฉันโดยปกติเราควรจัดระเบียบรหัสดังนี้: สร้าง AppComponent และ AppModule ซึ่งจะให้วัตถุทั้งหมดที่จะใช้ในขณะที่แอปเปิดอยู่ @Module public class AppModule { private final MyApplicationClass application; public AppModule(MyApplicationClass application) { this.application = application; } @Provides @Singleton Context provideApplicationContext() …

2
วิธีใช้ Dagger 2 เพื่อ Inject ViewModel ของ Fragments ที่เหมือนกันภายใน ViewPager
ฉันกำลังพยายามเพิ่ม Dagger 2 ในโครงการของฉัน ฉันสามารถฉีด ViewModels (ส่วนประกอบ AndroidX Architecture) สำหรับชิ้นส่วนของฉัน ฉันมีViewPager ซึ่งมี 2 อินสแตนซ์ของแฟรกเมนต์เดียวกัน (เฉพาะการเปลี่ยนแปลงเล็กน้อยสำหรับแต่ละแท็บ) และในแต่ละแท็บฉันกำลังเฝ้าดูLiveDataเพื่อรับการอัปเดตเกี่ยวกับการเปลี่ยนแปลงข้อมูล (จาก API) ปัญหาคือเมื่อการตอบสนอง api มาและอัปเดตLiveDataข้อมูลเดียวกันในส่วนที่มองเห็นได้ในปัจจุบันจะถูกส่งไปยังผู้สังเกตการณ์ในแท็บทั้งหมด (ฉันคิดว่านี่อาจเป็นเพราะขอบเขตของViewModel) นี่คือวิธีที่ฉันสังเกตข้อมูลของฉัน: override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) activityViewModel.expenseList.observe(this, Observer { swipeToRefreshLayout.isRefreshing = false viewAdapter.setData(it) }) .... } ฉันใช้คลาสนี้ในการจัดหาViewModels: class ViewModelProviderFactory @Inject constructor(creators: MutableMap<Class<out ViewModel?>?, Provider<ViewModel?>?>?) : ViewModelProvider.Factory { …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.