İki tətbiq arasında məlumat ötürmə üsullarını göstərin.
sobes.tech Süni İntellekt
AI-dan cavab
-
İntentlər: Digər tətbiqetmənin komponentlərini başlatmaq və məlumatları
Intent.putExtra()vasitəsilə ötürmək üçün istifadə olunur. Primitiv tiplər, String, Parcelable və Serializable obyektlərin ötürülməsini dəstəkləyir.// Məlumatların göndərilməsi val intent = Intent("com.example.ANOTHER_APP_ACTION") intent.putExtra("key", "value") startActivity(intent)// Digər tətbiqdə məlumatların alınması (Activity-də) val data = intent.getStringExtra("key") -
Content Providers: Paylaşılan məlumatlara strukturlaşdırılmış giriş imkanı verir (məsələn, əlaqə məlumatları, media). Tətbiqlər URI vasitəsilə məlumatları sorğu edə, əlavə edə, yeniləyə və silə bilər. Məlumat mənbəyində
ContentProvider-in tətbiqi tələb olunur.// Əlaqələrdən məlumat sorğusunun nümunəsi (sistem ContentProvider) val cursor = contentResolver.query( ContactsContract.Contacts.CONTENT_URI, null, null, null, null ) // ... cursor-un işlənməsi cursor?.close() -
Binder (AIDL): Android Interface Definition Language. İki tətbiq arasında proseslərarası əlaqə (IPC) üçün istifadə olunur. Xidmət interfeysini müəyyən etməyə imkan verir və başqa bir prosesdən çağırıla bilər. Çətin həyata keçirilir, yüksək yüklü ssenarilər və ya ikitərəfli əlaqə üçün uyğundur.
// AIDL interfeys nümunəsi ( .aidl faylında) package com.example.myapp; interface IRemoteService { String getData(); void setData(String value); }// AIDL əsasında yaradılan binders və əlaqə üçün istifadə olunur. // AIDL xidməti istifadə edən müştəri nümunəsi private var remoteService: IRemoteService? = null private val connection = object : ServiceConnection { override fun onServiceConnected(className: ComponentName, service: IBinder) { remoteService = IRemoteService.Stub.asInterface(service) // İndi remoteService metodlarını çağırmaq olar } override fun onServiceDisconnected(className: ComponentName) { remoteService = null } } -
Fayl paylaşımı: Ümumi qovluqlar vasitəsilə, hər iki tətbiq üçün əlçatan (məsələn, xarici yaddaş) və ya
FileProvidervasitəsilə müvəqqəti fayl girişinə imkan verir. Oxuma/yazma icazələri tələb olunur.// FileProvider vasitəsilə müvəqqəti girişin nümunəsi val fileUri = FileProvider.getUriForFile(context, "com.example.myapp.fileprovider", file) val intent = Intent(Intent.ACTION_VIEW) intent.setDataAndType(fileUri, "image/*") intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) startActivity(intent) -
Broadcast Receiver-lər: Tətbiqlər yayım mesajlarını göndərə və ala bilər. Məlumatlar Intent vasitəsilə Broadcast daxilində ötürülür. Digər tətbiqlərə hadisələr barədə bildiriş vermək üçün uyğundur, ikitərəfli məlumat ötürülməsi üçün deyil.
// Broadcast göndərilməsi val intent = Intent("com.example.MY_CUSTOM_ACTION") intent.putExtra("data", "some_info") sendBroadcast(intent)// Broadcast qəbul (BroadcastReceiver-də) class MyReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val data = intent.getStringExtra("data") // ... } } -
Soketlər: Bir cihazdakı tətbiqlər arasında şəbəkə əlaqəsi üçün istifadə olunur (localhost və ya şəbəkə üzərindən). Daha aşağı səviyyəli şəbəkə protokollarının həyata keçirilməsini tələb edir.
-
Paylaşılan Parametrlər / Veritabanları (məhdud): Ümumi fayl kimi SharedPreferences və ya SQLite verilənlər bazası istifadə etmək mümkündür, lakin bu etibarlı və təhlükəsiz üsul deyil, çünki icazələrin və sinxronizasiyanın diqqətlə idarə olunmasını tələb edir və təhlükəsiz olmaya bilər. Adətən, müstəqil tətbiqlər arasında məlumat ötürmək üçün tövsiyə edilmir.