تمرير البيانات من النوع غير البدائي بين الأنشطة في android
-
10-07-2019 - |
سؤال
لنفترض أنك تريد بدء نشاط جديد وتمرير بعض البيانات من النشاط الحالي إليه.إذا كانت البيانات من النوع البدائي، فيمكنك ببساطة استخدام غرض وإضافة إضافات، ولكن كيف يمكنك القيام بذلك مع هياكل البيانات الأكثر تعقيدًا مثل قوائم المصفوفات أو الكائنات؟
المحلول
لديك بعض الخيارات:
- يمكنك تغليف البنية الأكثر تعقيدًا في فئة تنفذ
Parcelable
واجهة، والتي يمكن تخزينها في اضافية - يمكنك تغليف البنية الأكثر تعقيدًا في فئة تنفذ
Serializable
واجهة، والتي يمكن تخزينها في اضافية - يمكنك استخدام أعضاء البيانات الثابتة لتمرير الأشياء، حيث أنهم جميعًا في نفس العملية
- يمكنك استخدام وحدة تخزين خارجية (ملف، قاعدة بيانات،
SharedPreferences
) - كما لاحظ الشخص الذي نشر للتو، استخدم مكونًا شائعًا، مثل المخصص
Application
أو محليService
ما لا تريد القيام به هو تمرير الأشياء الكبيرة عبر الإضافات.على سبيل المثال، إذا كنت تقوم بإنشاء تطبيق يلتقط الصور من الكاميرا، فأنت لا تريد تمريرها إلى الإضافات - استخدم عضو بيانات ثابت (كما يبدو هذا رديئًا).تم تصميم النوايا للعمل عبر العمليات، مما يعني أن هناك قدرًا ما من نسخ البيانات مستمرًا، والذي تريد تجنبه عندما لا يكون ذلك ضروريًا للأشياء الكبيرة.
نصائح أخرى
وخيار واحد وأنا على علم وتخزين البيانات التي تستخدم في كائن التطبيق فيه جميع الأنشطة الخاصة بك يمكن استرداد من السياق.
ولقد سمعت أيضا استخدام جوجل بروتوكول العازلة للتحقيق حل الأداء العالي