-
Notifications
You must be signed in to change notification settings - Fork 3.3k
[image_picker] Mention launchMode: singleInstance
in README
#3759
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[image_picker] Mention launchMode: singleInstance
in README
#3759
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
just a couple formatting changes
@@ -41,6 +41,9 @@ It is no longer required to add `android:requestLegacyExternalStorage="true"` as | |||
**Note:** Images and videos picked using the camera are saved to your application's local cache, and should therefore be expected to only be around temporarily. | |||
If you require your picked image to be stored permanently, it is your responsibility to move it to a more permanent location. | |||
|
|||
|
|||
**Note:** Launching the image picker from an `Activity` with `launchMode: singleInstance` will always return `RESULT_CANCELED`. In this launch mode, new activities are created in a separate [Task][2]. As activities cannot communicate between tasks, the image picker activity cannot send back its eventual result to the calling activity. To work around this problem, consider using `launchMode: singleTask` instead. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: break this up into multiple lines, similar to how we've formatted other blocks of text in this README.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How would you want me to break up the lines? The way it is currently done in the README does not strike me as being consistent.
Should I limit lines to the 80 character count? Or should a start a newline when it makes sense for the flow of the text?
Option 1:
**Note:** Launching the image picker from an `Activity` with
`launchMode: singleInstance` will always return `RESULT_CANCELED`. In this
launch mode, new activities are created in a separate [Task][2]. As activities
cannot communicate between tasks, the image picker activity cannot send back
its eventual result to the calling activity. To work around this problem,
consider using `launchMode: singleTask` instead.
Option 2:
**Note:** Launching the image picker from an `Activity` with `launchMode: singleInstance` will always return `RESULT_CANCELED`.
In this launch mode, new activities are created in a separate [Task][2]. As activities cannot communicate between tasks, the image picker activity cannot send back its eventual result to the calling activity.
To work around this problem, consider using `launchMode: singleTask` instead.
Combining options 1 and 2:
**Note:** Launching the image picker from an `Activity` with
`launchMode: singleInstance` will always return `RESULT_CANCELED`.
In this launch mode, new activities are created in a separate [Task][2].
As activities cannot communicate between tasks, the image picker activity
cannot send back its eventual result to the calling activity.
To work around this problem, consider using `launchMode: singleTask` instead.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We generally try to keep lines to 80 characters in the READMEs; there's no enforcement so it's not always done consistently. Either the first or third option is fine.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd go with option 3 here.
If you feel like making the rest of the readme fit this rule as well, that would be appreciated! You don't have to though.
@@ -41,6 +41,9 @@ It is no longer required to add `android:requestLegacyExternalStorage="true"` as | |||
**Note:** Images and videos picked using the camera are saved to your application's local cache, and should therefore be expected to only be around temporarily. | |||
If you require your picked image to be stored permanently, it is your responsibility to move it to a more permanent location. | |||
|
|||
|
|||
**Note:** Launching the image picker from an `Activity` with `launchMode: singleInstance` will always return `RESULT_CANCELED`. In this launch mode, new activities are created in a separate [Task][2]. As activities cannot communicate between tasks, the image picker activity cannot send back its eventual result to the calling activity. To work around this problem, consider using `launchMode: singleTask` instead. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now that we have 2 Note
s, maybe it would be a good idea to add a section for Critical Information
or something like that, to avoid collecting multiple "tag" endings on this section.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds good. Would that still fall under the Android heading? Example:
### Android
...
#### Critical information
Images and videos picked using the camera are saved to your application's local cache, and should therefore be expected to only be around temporarily.
If you require your picked image to be stored permanently, it is your responsibility to move it to a more permanent location.
Launching the image picker from an `Activity` with `launchMode: singleInstance` will always return `RESULT_CANCELED`.
In this launch mode, new activities are created in a separate [Task][2]. As activities cannot communicate between tasks, the image picker activity cannot send back its eventual result to the calling activity.
To work around this problem, consider using `launchMode: singleTask` instead.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, a subheading of Android
as you've shown there would definitely be the right approach.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In fact, even better might be to make each of these instead be a new ####
subheading, and also move Handling MainActivity destruction on Android
and Android Photo Picker
up here as ####
headings as well. Currently those are free-floating rather than under Android
, even though they are Android-specific (and the first is a similar sort of note to this one).
@tarrinneal What do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think @stuartmorgan has the right idea here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The new text looks great! LGTM once Tarrin is happy with the structure.
e9a0ad1
to
17a5a30
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for doing the extra work with this one!
Roll Packages from 7e3f5da to de6131d (41 revisions) flutter/packages@7e3f5da...de6131d 2023-05-01 reidbaker@google.com I122213 update non examples (flutter/packages#3846) 2023-04-29 47866232+chunhtai@users.noreply.github.com [go_router] Cleans up route match API and introduces dart fix (flutter/packages#3819) 2023-04-29 43054281+camsim99@users.noreply.github.com [camerax] Add `LifecycleOwner` Proxy (flutter/packages#3837) 2023-04-29 stuartmorgan@google.com [file_selector] Add getDirectoryPaths implementation for Windows (flutter/packages#3704) 2023-04-29 stuartmorgan@google.com [various] Update Android example min SDKs (flutter/packages#3847) 2023-04-28 49699333+dependabot[bot]@users.noreply.github.com Bump github/codeql-action from 2.2.12 to 2.3.2 (flutter/packages#3838) 2023-04-28 43054281+camsim99@users.noreply.github.com [camerax] Implement Image Streaming (flutter/packages#3454) 2023-04-28 reidbaker@google.com [various] update agp and gradle for all examples in packages (flutter/packages#3822) 2023-04-28 54558023+keyonghan@users.noreply.github.com Update xcode to 14c18 (flutter/packages#3774) 2023-04-28 andrewjohncoutts@gmail.com [camera_android] Add NV21 as an image stream format #3277 (flutter/packages#3639) 2023-04-28 gautier.bayzelon@gmail.com [go_router] Remove unused navigator keys (flutter/packages#3708) 2023-04-28 JeroenWeener@users.noreply.github.com [image_picker] Move I/O operations to a separate thread (flutter/packages#3506) 2023-04-28 49699333+dependabot[bot]@users.noreply.github.com [pigeon]: Bump org.jetbrains.kotlin:kotlin-gradle-plugin from 1.8.20 to 1.8.21 in /packages/pigeon/platform_tests/test_plugin/android (flutter/packages#3824) 2023-04-28 stuartmorgan@google.com [pigeon] Reland: Add an initial example app (flutter/packages#3832) 2023-04-28 engine-flutter-autoroll@skia.org Roll Flutter from c9004ff to 66fa4c5 (68 revisions) (flutter/packages#3830) 2023-04-28 stuartmorgan@google.com [various] Conditionalize the namespace in all Android plugins (flutter/packages#3836) 2023-04-27 49699333+dependabot[bot]@users.noreply.github.com [in_app_pur]: Bump com.android.billingclient:billing from 5.1.0 to 5.2.0 in /packages/in_app_purchase/in_app_purchase_android/android (flutter/packages#3672) 2023-04-27 ychris@google.com [auick_action_ios] Retries multiple times to not fail ci when there is a flake (flutter/packages#3823) 2023-04-26 magder@google.com Swap some iOS package CODEOWNERS (flutter/packages#3793) 2023-04-26 stuartmorgan@google.com [various] Add `targetCompatibility` to build.gradle (flutter/packages#3825) 2023-04-26 stuartmorgan@google.com [various] Set cmake_policy versions (flutter/packages#3828) 2023-04-26 stuartmorgan@google.com [path_provider] Allow `win32` up to version 4.x (flutter/packages#3820) 2023-04-26 stuartmorgan@google.com [tool] Move Android lint checks (flutter/packages#3816) 2023-04-25 evace93@gmail.com [google_maps_flutter_android] Fix Android lint warnings (flutter/packages#3751) 2023-04-25 49699333+dependabot[bot]@users.noreply.github.com [in_app_pur]: Bump androidx.annotation:annotation from 1.5.0 to 1.6.0 in /packages/in_app_purchase/in_app_purchase_android/android (flutter/packages#3381) 2023-04-25 jason-simmons@users.noreply.github.com Update test golden images for the latest Skia roll (flutter/packages#3787) 2023-04-25 stuartmorgan@google.com [various] Adds Android namespace (flutter/packages#3791) 2023-04-25 reidbaker@google.com [shared_preferences] Update gradle/agp in example apps (flutter/packages#3809) 2023-04-24 43640732+dancamdev@users.noreply.github.com [go_router] Adds name to TypedGoRoute (flutter/packages#3702) 2023-04-22 10687576+bparrishMines@users.noreply.github.com [webview_flutter] Adds support to receive permission requests (flutter/packages#3543) 2023-04-21 stuartmorgan@google.com [google_sign_in] Fix Android Java warnings (flutter/packages#3762) 2023-04-21 stuartmorgan@google.com [local_auth] Fix enum return on Android (flutter/packages#3780) 2023-04-21 stuartmorgan@google.com [pigeon] Warn when trying to use enums in collections (flutter/packages#3782) 2023-04-21 10687576+bparrishMines@users.noreply.github.com [webview_flutter_android] [webview_flutter_wkwebview] Platform implementations for supporting permission requests (flutter/packages#3792) 2023-04-21 scheglov@google.com [pigeon] Update for compatibility with a future change to the analyzer. (flutter/packages#3789) 2023-04-21 10687576+bparrishMines@users.noreply.github.com [camera_android] Fix Android lint warnings (flutter/packages#3716) 2023-04-21 10687576+bparrishMines@users.noreply.github.com [webview_flutter_platform_interface] Adds method to receive permission requests (flutter/packages#3767) 2023-04-21 magder@google.com [image_picker_ios] In unit test write and read kCGImagePropertyExifUserComment property (flutter/packages#3783) 2023-04-21 widrans@gmail.com [go_router_builder] Fixed the return value of the generated push method (flutter/packages#3650) 2023-04-21 JeroenWeener@users.noreply.github.com [image_picker] Mention `launchMode: singleInstance` in README (flutter/packages#3759) 2023-04-21 stuartmorgan@google.com Revert "[pigeon] Add an initial example app" (flutter/packages#3785) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages-flutter-autoroll Please CC flutter-ecosystem@google.com,rmistry@google.com on the revert to ensure that a human ...
…r#3759) Users of the image picker are reporting issues for Android when setting the `launchMode` of the application activity to `singleInstance`. Namely, the image picker will always return `RESULT_CANCELED`. After investigation, it turned out that this problem is inherent by the way Android handles activities with this launch mode: `singleInstance` instructs the framework to open new activities in a new task. As activities cannot communicate between tasks, the image picker activity is unable to relay back the result to the calling activity. This PR updates the README to mention this behavior and provide a workaround. Closes [76856](flutter/flutter#76856).
Users of the image picker are reporting issues for Android when setting the
launchMode
of the application activity tosingleInstance
. Namely, the image picker will always returnRESULT_CANCELED
. After investigation, it turned out that this problem is inherent by the way Android handles activities with this launch mode:singleInstance
instructs the framework to open new activities in a new task. As activities cannot communicate between tasks, the image picker activity is unable to relay back the result to the calling activity.This PR updates the README to mention this behavior and provide a workaround.
Closes 76856.
Pre-launch Checklist
dart format
.)[shared_preferences]
pubspec.yaml
with an appropriate new version according to the pub versioning philosophy, or this PR is exempt from version changes.CHANGELOG.md
to add a description of the change, following repository CHANGELOG style.///
).If you need help, consider asking for advice on the #hackers-new channel on Discord.