ฉันกำลังสร้างแอป Android ขนาดเล็กที่เรียกใช้ Foreground Service ซึ่งจะคอยฟังและแจ้งเตือนผู้ใช้ทุกครั้งที่มีข้อความ SMS ใหม่เข้ามา เมื่อบริการเริ่มต้น บริการจะลงทะเบียน BroadcastReceiver
ด้วยการกระทำ android.provider.Telephony.SMS_RECEIVED
ใน IntentFilter และยกเลิกการลงทะเบียนเมื่อหยุด แอปพลิเคชันยังได้รับข้อมูลผู้ใช้พร้อมกับรายการหมายเลขที่เลือกจากไฟล์ JSON ในที่จัดเก็บข้อมูลภายในเพื่อให้ผู้รับสามารถกรองหมายเลขที่จะแจ้งเตือนผู้ใช้ได้ MainActivity ของฉันมี 3 ปุ่ม ได้แก่ ปุ่มเริ่มและหยุดบริการ พร้อมด้วยปุ่มการตั้งค่าที่จะย้ายไปยัง SettingActivity ที่แสดงข้อมูลผู้ใช้บางส่วนตลอดจนรายการหมายเลขที่เลือกและอนุญาตให้ผู้ใช้เปลี่ยนได้ คำถามของฉันคือ: วิธีใดที่ดีที่สุดในการแบ่งปันข้อมูลผู้ใช้ทั่วทั้งแอปเพื่อให้กิจกรรมทั้งหมดตลอดจนบริการและผู้รับสามารถเข้าถึงได้ ฉันคิดและลองใช้วิธีสองสามวิธี:
- รับข้อมูลผู้ใช้จากไฟล์ใน MainActivity ที่แอปพลิเคชันเริ่มต้นและส่งผ่าน Intent ไปยังผู้อื่น: สิ่งนี้ทำงานได้ดีเมื่อส่งข้อมูลจากกิจกรรมไปยังกิจกรรมรวมถึงบริการ แต่ดูเหมือนว่าจะไม่ทำงานกับ
BroadcastReceiver
เนื่องจากมีการลงทะเบียนเพื่อฟัง ไปที่SMS_RECEIVED
และไม่ใช่การออกอากาศอื่น แม้ว่าฉันจะสร้าง Intent ใหม่และออกอากาศด้วยstartBroadcast
- การทำให้วัตถุ
user
คงที่: ฉันพยายามทำให้User
สาธารณะเป็นแบบคงที่เพื่อให้สามารถเรียกใช้โดยคลาสอื่นได้เมื่อ MainActivity รับข้อมูลจากไฟล์เสร็จแล้ว โดยพื้นฐานแล้วให้ใส่public static User user
ใน MainActivity และเรียกมันด้วยMainActivity.user
ในคลาสอื่น สิ่งนี้ใช้ได้แม้กับBroadcastReceiver
แต่ฉันไม่แน่ใจว่านี่เป็นวิธีที่ถูกต้องในการแบ่งปันข้อมูลตลอดทั้งแอปพลิเคชันหรือไม่ - สุดท้ายคือการรับข้อมูลจากไฟล์เมื่อมีการเรียกใช้กิจกรรมหรือบริการแต่ละรายการ ซึ่งหมายความว่าเมื่อมีการเรียกใช้กิจกรรมหรือบริการแต่ละรายการ ก็จะรับข้อมูลจากไฟล์ JSON อีกครั้ง ฉันยังไม่ได้ลองใช้แต่ฉันคิดว่าอาจส่งผลต่อประสิทธิภาพและความสอดคล้องของข้อมูลทั่วทั้งแอป
ดังนั้นวิธีที่ถูกต้องในการดำเนินการนี้คืออะไร? กรุณาให้ฉันข้อเสนอแนะบางอย่าง. ขอบคุณพวกคุณล่วงหน้า