aidl در فلاتر چیست؟
- 1403/12/20
AIDL (Android Interface Definition Language) زبانی است که برای تعریف رابطهای ارتباط بین فرآیندی (IPC) در اندروید استفاده میشود. این ابزار برای ارتباط بین اپلیکیشنها یا فرآیندهای جداگانه در اندروید طراحی شده است و امکان فراخوانی متدها و انتقال داده بین آنها را فراهم میکند.
ایجاد فایل AIDL
یک فایل با پسوند .aidl
ایجاد کنید و در آن متدهایی که اپلیکیشن کلاینت میتواند فراخوانی کند، تعریف کنید. به عنوان مثال:
interface IMyAidlService {
String getGreeting(String name);
}
پیادهسازی سرویس در اندروید
یک سرویس اندروید ایجاد کرده و کلاس Stub تولیدشده از فایل AIDL را پیادهسازی کنید.
public class MyAidlService extends Service {
private final IMyAidlService.Stub binder = new IMyAidlService.Stub() {
@Override
public String getGreeting(String name) {
return "Hello, " + name + "!";
}
};
@Override
public IBinder onBind(Intent intent) {
return binder;
}
}
در فلاتر برای تعامل با سرویس AIDL باید از پلاگینهای Platform Channels استفاده کنید. مراحل زیر توضیح میدهند که چگونه AIDL را در فلاتر به کار ببرید:
در فلاتر:
import 'package:flutter/services.dart';
class AidlService {
static const platform = MethodChannel('com.example.myapp/aidl_service');
static Future<String> getGreeting(String name) async {
try {
final String result = await platform.invokeMethod('getGreeting', {"name": name});
return result;
} on PlatformException catch (e) {
return "Failed to get greeting: ${e.message}";
}
}
}
در اندروید (کلاس MainActivity):
new MethodChannel(getFlutterEngine().getDartExecutor().getBinaryMessenger(), "com.example.myapp/aidl_service")
.setMethodCallHandler((call, result) -> {
if (call.method.equals("getGreeting")) {
String name = call.argument("name");
String greeting = myAidlService.getGreeting(name);
result.success(greeting);
} else {
result.notImplemented();
}
});
فراخوانی سرویس در فلاتر
حالا میتوانید از سرویس AIDL در اپلیکیشن فلاتر استفاده کنید:
ElevatedButton(
onPressed: () async {
String greeting = await AidlService.getGreeting("Hamid");
print(greeting); // خروجی: Hello, Hamid!
},
child: Text("Call AIDL Service"),
);
رایگان ثبت نام کنید و اولین نفری باشید که از پست های جدید مطلع می شوید.