Status Update
Comments
da...@google.com <da...@google.com> #2
<transition xmlns:android="
<item android:drawable="@drawable/test_drawable_blue"/>
<item android:drawable="@drawable/test_drawable_green"/>
</transition>
where blue/green drawables look like this:
<shape
xmlns:android="
android:shape="rectangle">
<size
android:width="@dimen/drawable_large_size"
android:height="@dimen/drawable_small_size" />
<solid
android:color="@color/test_blue" />
</shape>
Then added this test:
@Test
public void testMutateTransitionDrawable() {
Drawable drawable = ResourcesCompat.getDrawable(mResources,
R.drawable.test_transition_drawable, null);
assertTrue(drawable instanceof TransitionDrawable);
Drawable mutated = drawable.mutate();
assertTrue(drawable instanceof TransitionDrawable);
assertTrue(mutated instanceof TransitionDrawable);
}
It passes on the device. Going to also try on other earlier devices a bit later in the day once they are charged.
da...@google.com <da...@google.com> #3
ah...@gmail.com <ah...@gmail.com> #4
da...@google.com <da...@google.com> #5
I see... Indeed execPerConnectionSQL
would be ideal and was actually introduced for this and similar reasons (to let user apply per connection configurations), but it is tied to the native bindings in the framework. I don't think we can backport it to older APIs, but we can update the SupportSQLiteDatabase
ah...@gmail.com <ah...@gmail.com> #6
Thanks for your reply! I think adding it to the SupportSQLiteDatabase would emphasize its importance so that third party SQLite providers like Requery might take it into account and provide a backport that would work on pre-API 30 levels. I've already opened an issue there asking them to support it, but that was before our conversation.[1] If you don't mind I'll link your comment there. (I'll wait for your OK though before doing that)
ap...@google.com <ap...@google.com> #7
Branch: androidx-master-dev
commit 2e7b221b71de60a3a70589cabfe0816c8a2bba2a
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Fri Nov 06 11:35:22 2020
Add default method for execPerConnectionSQL() in SupportSQLiteDatabase
SQLiteDatabase#execPerConnectionSQL() was added in API 30 and cannot be backported but a new default method for it can be declared so those who provide the androidx.sqlite interfaces with unbundled SQLite bindings can implement it. For the default framework implementation of the interface the method will throw an UnsupportedOperationException if the API level is lower than 30. To check if the operation is supported users should call isExecPerConnectionSQLSupported(). This allow us to not add @RequireApi(30) which would prevent unbundled implementations to not offer the functionality to lower API levels.
Bug: 172270145
Test: N/A
Relnote: Add default method for execPerConnectionSQL() in SupportSQLiteDatabase
Change-Id: I86326d81aad82c1efccbb2087c439655c9b4100f
M sqlite/sqlite-framework/src/main/java/androidx/sqlite/db/framework/FrameworkSQLiteDatabase.java
M sqlite/sqlite/api/current.txt
M sqlite/sqlite/api/public_plus_experimental_current.txt
M sqlite/sqlite/api/restricted_current.txt
M sqlite/sqlite/src/main/java/androidx/sqlite/db/SupportSQLiteDatabase.java
Description
Component used: Jetpack Room Version used: 2.2.5 Devices/Android versions reproduced on: Any
I'd like to execute some
PRAGMA
statements[1], before using the Database, I tried to do that ononOpen
callback but it doesn't seem to work. There is anonConfigure
[2] callback from the SQLiteOpenHelper that I can use but it's not exposed through Room. Is it possible to expose it or is there an alternative way to executePRAGMA
statements?I can send a PR if it's okay.
[1] PRAGMA wal_autocheckpoint=-1
[2]https://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper#onConfigure(android.database.sqlite.SQLiteDatabase)