Mengirim Objek Parcelable sebagai Serializable

Proyek Android yang dimaksud sudah menggunakan Serializable untuk meneruskan informasi antar modul internal.

Saya sedang mengerjakan salah satu Modul yang juga menggunakan Perpustakaan Eksternal untuk menghitung Rute Navigasi.

Saya perlu meneruskan salah satu objek "eksternal" itu ke modul lain, ini tidak dapat diserialkan jadi saya tidak dapat mengirimkannya secara normal. Pemrogram sebelum saya telah mengubah semua Objek yang tidak dapat diserialkan menjadi variabel statis di Kelas Wrapper, saya tidak yakin apakah itu ide yang bagus meskipun modul harus tetap aktif sepanjang waktu.

Ini adalah kelas pembungkus Serializable:

private static Road road;
private NavigationStep firstNavigationStep;

/**
 * To send the route information to the App. Here is everything the app needs to display the
 * data to the user.
 * @param road the route the user is to follow
 * @param firstNavigationStep the users location and the current Step.
 */
public CurrentRoad(Road road, NavigationStep firstNavigationStep){
    this.firstNavigationStep = firstNavigationStep;
    this.road     = road;
}

Menulis Jalan sebagai sementara membuat saya kehilangan data, menulis seluruh kelas pembungkus untuk jalan akan terlalu merepotkan (diperlukan untuk membuat overlay, jadi banyak Geometri ada di dalam dan berasal dari perpustakaan eksternal jadi saya mungkin melupakan sesuatu). Mengubah keseluruhan Proyek menjadi Parcelable juga tidak realistis.

Apakah ada solusi? Apakah cara terbaik untuk menyimpan apa yang saya perlukan sebagai statis?


person Raeglan    schedule 20.12.2016    source sumber


Jawaban (2)


Coba gunakan EventBus. Kirim acara Sticky, yang berisi referensi objek. Ini akan dikirimkan ke setiap objek berlangganan sampai Anda secara eksplisit membatalkan acara tersebut.

person Alex Shutov    schedule 20.12.2016
comment
Sudah ada layanan pesan yang dijelaskan dalam arsitektur kami, menggunakan Serializable. Ini adalah MessageManger yang ditulis oleh orang lain di proyek tersebut. Saya agak baru di tim dan proyek ini mencakup lebih dari satu perusahaan sehingga menambahkan perpustakaan eksternal tidaklah mudah - person Raeglan; 20.12.2016

Mungkin Anda bisa menggunakan acara (http://greenrobot.org/eventbus/) untuk meneruskan objek ke di mana Anda membutuhkannya.

person Julius    schedule 20.12.2016
comment
Sudah ada layanan pesan yang dijelaskan dalam arsitektur kami, menggunakan Serializable. Ini adalah MessageManger yang ditulis oleh orang lain di proyek tersebut. Saya agak baru di tim dan proyek ini mencakup lebih dari satu perusahaan sehingga menambahkan perpustakaan eksternal tidaklah mudah - person Raeglan; 20.12.2016
comment
Oke, saya tidak yakin saya memahami nuansa pertanyaan Anda, tapi mungkin Anda bisa mencoba menyimpannya dalam satu instance di kelas aplikasi Anda (mungkin diperluas). Dengan asumsi Anda selalu memiliki akses ke konteks aplikasi, itu akan memungkinkan Anda menyimpan sesuatu yang seharusnya tetap ada selama aplikasi Anda. Lalu mungkin ada niat atau sinyal lain untuk memicu bahwa nilai dari kelas singelton ini harus dibaca di pihak penerima. - person Julius; 20.12.2016