From 9ac6da7bb67c63e1f7ac92ea7fbe76f3adb8f106 Mon Sep 17 00:00:00 2001 From: gaaclarke <30870216+gaaclarke@users.noreply.github.com> Date: Wed, 27 Oct 2021 17:05:49 -0700 Subject: [PATCH] [device_info] started using Background Platform Channels (#4456) --- packages/device_info/device_info/CHANGELOG.md | 3 ++- .../plugins/deviceinfo/DeviceInfoPlugin.java | 26 +++++++++++++++++-- packages/device_info/device_info/pubspec.yaml | 2 +- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/packages/device_info/device_info/CHANGELOG.md b/packages/device_info/device_info/CHANGELOG.md index 97349d450cf1..cdcb906da2fa 100644 --- a/packages/device_info/device_info/CHANGELOG.md +++ b/packages/device_info/device_info/CHANGELOG.md @@ -1,7 +1,8 @@ -## NEXT +## 2.0.3 * Remove references to the Android V1 embedding. * Updated Android lint settings. +* Started using Background Platform Channels when available. ## 2.0.2 diff --git a/packages/device_info/device_info/android/src/main/java/io/flutter/plugins/deviceinfo/DeviceInfoPlugin.java b/packages/device_info/device_info/android/src/main/java/io/flutter/plugins/deviceinfo/DeviceInfoPlugin.java index 9b766d7f8381..756f5e0ce820 100644 --- a/packages/device_info/device_info/android/src/main/java/io/flutter/plugins/deviceinfo/DeviceInfoPlugin.java +++ b/packages/device_info/device_info/android/src/main/java/io/flutter/plugins/deviceinfo/DeviceInfoPlugin.java @@ -5,13 +5,18 @@ package io.flutter.plugins.deviceinfo; import android.content.Context; +import android.util.Log; import io.flutter.embedding.engine.plugins.FlutterPlugin; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugin.common.MethodChannel; +import io.flutter.plugin.common.MethodCodec; +import io.flutter.plugin.common.StandardMethodCodec; +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; /** DeviceInfoPlugin */ public class DeviceInfoPlugin implements FlutterPlugin { - + static final String TAG = "DeviceInfoPlugin"; MethodChannel channel; /** Plugin registration. */ @@ -32,7 +37,24 @@ public void onDetachedFromEngine(FlutterPlugin.FlutterPluginBinding binding) { } private void setupMethodChannel(BinaryMessenger messenger, Context context) { - channel = new MethodChannel(messenger, "plugins.flutter.io/device_info"); + String channelName = "plugins.flutter.io/device_info"; + // TODO(gaaclarke): Remove reflection guard when https://github.com/flutter/engine/pull/29147 + // becomes available on the stable branch. + try { + Class methodChannelClass = Class.forName("io.flutter.plugin.common.MethodChannel"); + Class taskQueueClass = Class.forName("io.flutter.plugin.common.BinaryMessenger$TaskQueue"); + Method makeBackgroundTaskQueue = messenger.getClass().getMethod("makeBackgroundTaskQueue"); + Object taskQueue = makeBackgroundTaskQueue.invoke(messenger); + Constructor constructor = + methodChannelClass.getConstructor( + BinaryMessenger.class, String.class, MethodCodec.class, taskQueueClass); + channel = + constructor.newInstance(messenger, channelName, StandardMethodCodec.INSTANCE, taskQueue); + Log.d(TAG, "Use TaskQueues."); + } catch (Exception ex) { + channel = new MethodChannel(messenger, channelName); + Log.d(TAG, "Don't use TaskQueues."); + } final MethodCallHandlerImpl handler = new MethodCallHandlerImpl(context.getContentResolver(), context.getPackageManager()); channel.setMethodCallHandler(handler); diff --git a/packages/device_info/device_info/pubspec.yaml b/packages/device_info/device_info/pubspec.yaml index c5830f401039..d557e496dcab 100644 --- a/packages/device_info/device_info/pubspec.yaml +++ b/packages/device_info/device_info/pubspec.yaml @@ -3,7 +3,7 @@ description: Flutter plugin providing detailed information about the device (make, model, etc.), and Android or iOS version the app is running on. repository: https://github.com/flutter/plugins/tree/master/packages/device_info/device_info issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+device_info%22 -version: 2.0.2 +version: 2.0.3 environment: sdk: ">=2.12.0 <3.0.0"