Роҳҳои интиқоли маълумот байни ду барномаҳоро номбар кунед.
sobes.tech AI
Ҷавоб аз AI
-
Интиҳобҳо: Барои оғоз кардани компонентҳои дигар барнома ва интиқоли маълумот тавассути
Intent.putExtra(). Аз навиштани намудҳои primitives, String, Parcelable ва Serializable дастгирӣ мекунанд.// Иҷрои маълумот val intent = Intent("com.example.ANOTHER_APP_ACTION") intent.putExtra("key", "value") startActivity(intent)// Гирифтани маълумот дар барномаҳои дигар (дар Activity) val data = intent.getStringExtra("key") -
Content Providers: Дастрасии сохторӣ ба маълумоти умумӣ (масалан, тамосҳо, медиа). Барномаҳо метавонанд дархост кунанд, ворид кунанд, навсозӣ ва тоза кунанд маълумот тавассути URI. Имплементацияи
ContentProviderдар манбаи маълумот зарур аст.// Намунаи дархости маълумот аз тамосҳо (ContentProvider системӣ) val cursor = contentResolver.query( ContactsContract.Contacts.CONTENT_URI, null, null, null, null ) // ... коркарди курсор cursor?.close() -
Binder (AIDL): Забони муайянкунии интерфейси Android. Барои муоширати байни равандҳо (IPC) байни ду барнома истифода мешавад. Имкон медиҳад, ки интерфейси хидматро муайян кунад, ки метавонад аз ҷониби раванди дигар даъват карда шавад. Гуногунро дар иҷро кардан, барои сценарияҳои бо бориш ё муоширати дутарафа мувофиқ аст.
// Намунаи интерфейси AIDL (дар файли .aidl) package com.example.myapp; interface IRemoteService { String getData(); void setData(String value); }// Биндерҳо, ки асос ёфтаанд ба AIDL ва барои пайвастшавӣ истифода мешаванд. // Намунаи муштарӣ, ки аз хидмати AIDL истифода мекунад private var remoteService: IRemoteService? = null private val connection = object : ServiceConnection { override fun onServiceConnected(className: ComponentName, service: IBinder) { remoteService = IRemoteService.Stub.asInterface(service) // Акнун метавон методҳои remoteService-ро даъват кард } override fun onServiceDisconnected(className: ComponentName) { remoteService = null } } -
Шарикии файлҳо: Тавассути директорияҳои умумӣ, ки барои ҳар ду барнома дастрасанд (масалан, нигоҳдории беруна) ё тавассути пешниҳоди дастрасии муваққат ба файлҳо тавассути
FileProvider. Аз иҷозатҳо барои хондан/навишт талаб мекунанд.// Намунаи пешниҳоди дастрасии муваққат тавассути FileProvider 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: Барномаҳо метавонанд паёмҳои васеъ паҳншударо (Broadcasts) фиристанд ва қабул кунанд. Маълумот тавассути Intent дар дохили Broadcast интиқол дода мешавад. Барои огоҳ кардани барномаҳои дигар дар бораи рӯйдодҳо, мувофиқ аст, на барои интиқоли дутарафа.
// Фиристодани Broadcast val intent = Intent("com.example.MY_CUSTOM_ACTION") intent.putExtra("data", "some_info") sendBroadcast(intent)// Гирифтани Broadcast (дар BroadcastReceiver) class MyReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val data = intent.getStringExtra("data") // ... } } -
Socketҳо: Барои муоширати шабакавӣ байни барномаҳо дар дастгоҳ (localhost) ё тавассути шабаъ. Нигоҳ доштани сатҳи поёнтарини протоколҳои шабакавӣ.
-
Префериҳои умумӣ / Базаҳои додаҳо (мегзад): Техникӣ имкон дорад, ки файлҳои умумии SharedPreferences ё SQLite базаи додаҳоро истифода баред, ки дар директорияи умумӣ ҷойгир шудаанд. Аммо, ин роҳи боварӣ ва бехатар нест, зеро талаб мекунад, ки иҷозатҳо ва ҳамоҳангсозиро бодиққат идора кунед, ва метавонад бехатар набошад. Одатан, барои интиқоли маълумот байни барномаҳои мустақил тавсия дода намешавад.