Rumah  >  Soal Jawab  >  teks badan

android - 实际项目中Activity传递数据最佳实践是?

有个代码优化的问题,假设现在项目有4个Activity依次跳转:A》B》C》D

  1. 有一些公共数据 B,C,D都需要,是用Intent依次传递,还是直接写成public static,或者更好的方法?

  2. 现在D界面进行了一些操作,希望返回到A时(注意:不是D直接跳到A,而是D,C,B回退到A)刷新界面。除了用标志位,更优的方法是?

来,畅所欲言吧

巴扎黑巴扎黑2720 hari yang lalu439

membalas semua(3)saya akan balas

  • 阿神

    阿神2017-04-18 09:19:15

    Perpustakaan yang menggunakan bas acara, disyorkan untuk menggunakan Eventbus
    Faedah:

    1. Siri data yang diluluskan tidak diperlukan

    2. Gunakan corak pemerhati untuk memisahkan

    balas
    0
  • PHP中文网

    PHP中文网2017-04-18 09:19:15

    1 Jika ia adalah pemalar, anda boleh menulis kelas Constant untuk menyimpannya secara khusus.
    2. Anda boleh membuka aktiviti mengikut urutan melalui startActivityForResult Apabila kembali, anda boleh menilai dan memindahkannya dalam onActivity berdasarkan data dalam Intent, requestCode dan resultCode, tetapi kod itu pasti tidak cukup menyegarkan.

    balas
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:19:15

    Keperluan tidak begitu jelas Senario ini sangat serupa dengan senario log masuk dan pendaftaran: klik pada halaman log masuk, lupakan kata laluan, kemudian selesaikan operasi dan kembali terus untuk melengkapkan log masuk.

    1. Jika BC tidak mempunyai sebarang keperluan interaksi semasa pemulangan dan tidak mempunyai keperluan khas untuk A, maka tetapkan terus launchMode kepada singleInstance atau singleTop (pemprosesan berbeza daripada yang terdahulu) digabungkan dengan Activity#onNewIntent(...)Mari kita laksanakan

    2. Jika anda mempunyai sebarang keperluan interaksi, cuma kembalikan tahap demi tahap.

    Selain itu, anda juga boleh terus menggunakan pustaka EventBus (EventBus, otto, RxBus semuanya boleh diterima. Anda juga boleh mempertimbangkan untuk menggunakan EventBus dalam senario di mana LocalBroadcastManager), tetapi anda perlu mempertimbangkannya sekiranya A sedang Memproses senario selepas kitar semula sistem.

    p.s. Hanya hapuskan keperluan untuk kaedah global statik....

    balas
    0
  • Batalbalas