Fixed
Status Update
Comments
yb...@google.com <yb...@google.com> #2
We started noticing this on Android 8 and 8.1 devices after we upgraded appcompat library from 1.3.1 to 1.4.0. Seems like that the newest library is using a different/newer classes for handling emojis.
vn...@gmail.com <vn...@gmail.com> #3
Thanks for the report, this is a combination we didn't predict and need to resolve.
In the current version of the libraries, precomputed text won't work with the presence of emoji in 1.4.0. There is no workaround using precomputed text in the current library, so the best solution is to `setText` as proposed.
Notes for resolution (options discussed):
1. Disabling emoji processing for precomputed text from InputFilter etc
2. Integrate emoji into PrecomputedTextCompat to apply emoji processing prior to precomputation (needs research)
In the current version of the libraries, precomputed text won't work with the presence of emoji in 1.4.0. There is no workaround using precomputed text in the current library, so the best solution is to `setText` as proposed.
Notes for resolution (options discussed):
1. Disabling emoji processing for precomputed text from InputFilter etc
2. Integrate emoji into PrecomputedTextCompat to apply emoji processing prior to precomputation (needs research)
yb...@google.com <yb...@google.com> #4
Going live in next release.
In current release I would recommend one of
- disabling emoji2 on TextViews with precomputed text
- disabling precomputed text if EmojiCompat.process(source) adds any Spans (this may be done/checked on background thread)
To resolve this, precomputed text will be discarded iff an EmojiSpan is being added. This cost will only be incurred if the text requires a replacement span due to platform missing an emoji.
vn...@gmail.com <vn...@gmail.com> #5
Project: platform/frameworks/support
Branch: androidx-main
commit db5061885534c4b23d4ab3a9246ee9cace4119d8
Author: Sean McQuillan <seanmcq@google.com>
Date: Tue Mar 08 14:47:07 2022
Unprecompute text when adding emoji
Emoji2 will now unwrap PrecomputedText to add emoji automatically. This
has the effect of discarding precomputed text when emoji spans are added.
Apps wishing to optimize this may call EmojiCompat.procss manually, then
avoid the PrecomutedText path if any spans are added.
Relnote: "Emoji2 will add emoji to PrecomputedText by discarding
previously precomputed text layout."
Fixes: b/211231958
Test: ./gradlew :e2:e2-bun:cAT
Change-Id: I47d066f5cd1f61e0d6338ecc133879fe5bda7e27
M emoji2/emoji2-bundled/src/androidTest/java/androidx/emoji2/bundled/viewstests/EmojiTextViewProcessTest.java
A emoji2/emoji2/src/main/java/androidx/emoji2/text/UnprecomputeTextOnModificationSpannable.java
M emoji2/emoji2/src/main/java/androidx/emoji2/text/EmojiProcessor.java
https://android-review.googlesource.com/2025744
Branch: androidx-main
commit db5061885534c4b23d4ab3a9246ee9cace4119d8
Author: Sean McQuillan <seanmcq@google.com>
Date: Tue Mar 08 14:47:07 2022
Unprecompute text when adding emoji
Emoji2 will now unwrap PrecomputedText to add emoji automatically. This
has the effect of discarding precomputed text when emoji spans are added.
Apps wishing to optimize this may call EmojiCompat.procss manually, then
avoid the PrecomutedText path if any spans are added.
Relnote: "Emoji2 will add emoji to PrecomputedText by discarding
previously precomputed text layout."
Fixes:
Test: ./gradlew :e2:e2-bun:cAT
Change-Id: I47d066f5cd1f61e0d6338ecc133879fe5bda7e27
M emoji2/emoji2-bundled/src/androidTest/java/androidx/emoji2/bundled/viewstests/EmojiTextViewProcessTest.java
A emoji2/emoji2/src/main/java/androidx/emoji2/text/UnprecomputeTextOnModificationSpannable.java
M emoji2/emoji2/src/main/java/androidx/emoji2/text/EmojiProcessor.java
vn...@gmail.com <vn...@gmail.com> #6
Can I know in which appcompat version that includes this fix? I'm using appcompat v1.4.1 and suddenly receive a lot of such crash :(
yb...@google.com <yb...@google.com> #7
This fix will be in the next stable release.
yb...@google.com <yb...@google.com>
yb...@google.com <yb...@google.com> #8
Hi someone is using my device for a business, Google ads, and a YouTube channel. The YouTube is mashup and I found a name in my Facebook where it should have only been my name. Now when I go to look up the emoji comments from the above I'll get a page saying I can't access and it won't let me go.
be...@google.com <be...@google.com> #9
I'd like to know if you can look into this or how will it go?
yb...@google.com <yb...@google.com>
xm...@gmail.com <xm...@gmail.com> #10
When support this? i face the same problem, it multiple query and insert, it'll block
yb...@google.com <yb...@google.com> #11
hopefully we'll have this in 2.1 . What is your use case, are you accessing the same database from different processes or are you creating 2 instance of the same RoomDatabase in the same process?
xm...@gmail.com <xm...@gmail.com> #12
Create one instance of RoomDatabase, and use LiveData paging query the datas and when querying, i also use the db connect insert the data, the query always wait the insert end and return
xm...@gmail.com <xm...@gmail.com> #13
BTW, other thread insert the data, or update the data
yb...@google.com <yb...@google.com> #14
if you are in the same process, don't use multiple RoomDatabase instances.
xm...@gmail.com <xm...@gmail.com> #15
Why the LiveData been blocked? the query always waiting for the insert end and return
ap...@google.com <ap...@google.com> #16
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 41bbdfb46058e7ef3ea6aa21ac8d7a3c7642fa1d
Author: Yuichi Araki <yaraki@google.com>
Date: Wed May 23 17:38:58 2018
Multi-instance invalidation
Developers can now sync observers for InvalidationTracker and LiveData
between multiple RoomDatabase instances by
RoomDatabase.Builder.enableMultiInstanceInvalidation(). This can also be
used for database instances in other processes. All the instances have
to be using the same database file.
When multi-instance invalidation is turned on, all the tables are
observed by an instance of MultiInstanceInvalidationClient, and
invalidation detected in one instance is broadcast to other instances by
remote procedure call.
Test: MultiInstanceInvalidationTest
Bug: 62334005
Bug: 80464228
Change-Id: I76033c5ac543ddaef735be06f828b7d7d607883a
M room/integration-tests/testapp/build.gradle
A room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/MultiInstanceInvalidationTest.java
M room/integration-tests/testapp/src/main/AndroidManifest.xml
A room/integration-tests/testapp/src/main/aidl/androidx/room/integration/testapp/ISampleDatabaseService.aidl
A room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/SampleDatabaseService.java
M room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/database/CustomerDao.java
A room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/database/Product.java
A room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/database/ProductDao.java
M room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/database/SampleDatabase.java
M room/runtime/api/current.txt
M room/runtime/src/main/AndroidManifest.xml
A room/runtime/src/main/aidl/androidx/room/IMultiInstanceInvalidationCallback.aidl
A room/runtime/src/main/aidl/androidx/room/IMultiInstanceInvalidationService.aidl
M room/runtime/src/main/java/androidx/room/DatabaseConfiguration.java
M room/runtime/src/main/java/androidx/room/InvalidationTracker.java
A room/runtime/src/main/java/androidx/room/MultiInstanceInvalidationClient.java
A room/runtime/src/main/java/androidx/room/MultiInstanceInvalidationService.java
M room/runtime/src/main/java/androidx/room/RoomDatabase.java
M room/testing/src/main/java/androidx/room/testing/MigrationTestHelper.java
https://android-review.googlesource.com/720919
https://goto.google.com/android-sha1/41bbdfb46058e7ef3ea6aa21ac8d7a3c7642fa1d
Branch: androidx-master-dev
commit 41bbdfb46058e7ef3ea6aa21ac8d7a3c7642fa1d
Author: Yuichi Araki <yaraki@google.com>
Date: Wed May 23 17:38:58 2018
Multi-instance invalidation
Developers can now sync observers for InvalidationTracker and LiveData
between multiple RoomDatabase instances by
RoomDatabase.Builder.enableMultiInstanceInvalidation(). This can also be
used for database instances in other processes. All the instances have
to be using the same database file.
When multi-instance invalidation is turned on, all the tables are
observed by an instance of MultiInstanceInvalidationClient, and
invalidation detected in one instance is broadcast to other instances by
remote procedure call.
Test: MultiInstanceInvalidationTest
Bug: 62334005
Bug: 80464228
Change-Id: I76033c5ac543ddaef735be06f828b7d7d607883a
M room/integration-tests/testapp/build.gradle
A room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/MultiInstanceInvalidationTest.java
M room/integration-tests/testapp/src/main/AndroidManifest.xml
A room/integration-tests/testapp/src/main/aidl/androidx/room/integration/testapp/ISampleDatabaseService.aidl
A room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/SampleDatabaseService.java
M room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/database/CustomerDao.java
A room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/database/Product.java
A room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/database/ProductDao.java
M room/integration-tests/testapp/src/main/java/androidx/room/integration/testapp/database/SampleDatabase.java
M room/runtime/api/current.txt
M room/runtime/src/main/AndroidManifest.xml
A room/runtime/src/main/aidl/androidx/room/IMultiInstanceInvalidationCallback.aidl
A room/runtime/src/main/aidl/androidx/room/IMultiInstanceInvalidationService.aidl
M room/runtime/src/main/java/androidx/room/DatabaseConfiguration.java
M room/runtime/src/main/java/androidx/room/InvalidationTracker.java
A room/runtime/src/main/java/androidx/room/MultiInstanceInvalidationClient.java
A room/runtime/src/main/java/androidx/room/MultiInstanceInvalidationService.java
M room/runtime/src/main/java/androidx/room/RoomDatabase.java
M room/testing/src/main/java/androidx/room/testing/MigrationTestHelper.java
Description
Version used: 1.0.0-alpha1
Devices/Android versions reproduced on: Emulator