Sobes.tech
Middle

İki tətbiq arasında məlumat ötürmə üsullarını göstərin.

sobes.tech Süni İntellekt

AI-dan cavab

  1. İ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")
    
  2. 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()
    
  3. 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
        }
    }
    
  4. Fayl paylaşımı: Ümumi qovluqlar vasitəsilə, hər iki tətbiq üçün əlçatan (məsələn, xarici yaddaş) və ya FileProvider vasitə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)
    
  5. 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")
            // ...
        }
    }
    
  6. 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.

  7. 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.