You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ky...@apache.org on 2018/12/26 09:02:44 UTC
[incubator-weex] branch master updated: Android data base fix
(#1970)
This is an automated email from the ASF dual-hosted git repository.
kyork pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-weex.git
The following commit(s) were added to refs/heads/master by this push:
new e8a7c93 Android data base fix (#1970)
e8a7c93 is described below
commit e8a7c932bb75109decfc64f3d39303da33c82418
Author: lvfen <28...@qq.com>
AuthorDate: Wed Dec 26 17:02:40 2018 +0800
Android data base fix (#1970)
* [Android]fix WXSQLiteOpenHelper crash
---
.../weex/appfram/storage/DefaultWXStorage.java | 21 +++++----
.../weex/appfram/storage/WXSQLiteOpenHelper.java | 51 ++++++++++++----------
2 files changed, 42 insertions(+), 30 deletions(-)
diff --git a/android/sdk/src/main/java/com/taobao/weex/appfram/storage/DefaultWXStorage.java b/android/sdk/src/main/java/com/taobao/weex/appfram/storage/DefaultWXStorage.java
index 2898848..226525b 100644
--- a/android/sdk/src/main/java/com/taobao/weex/appfram/storage/DefaultWXStorage.java
+++ b/android/sdk/src/main/java/com/taobao/weex/appfram/storage/DefaultWXStorage.java
@@ -143,15 +143,20 @@ public class DefaultWXStorage implements IWXStorageAdapter {
@Override
public void close() {
- try {
- mDatabaseSupplier.closeDatabase();
- if (mExecutorService != null) {
- mExecutorService.shutdown();
- mExecutorService = null;
+ execute(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ mDatabaseSupplier.closeDatabase();
+ if (mExecutorService != null) {
+ mExecutorService.shutdown();
+ mExecutorService = null;
+ }
+ } catch (Exception e) {
+ WXLogUtils.e(WXSQLiteOpenHelper.TAG_STORAGE, e.getMessage());
+ }
}
- } catch (Exception e) {
- WXLogUtils.e(WXSQLiteOpenHelper.TAG_STORAGE, e.getMessage());
- }
+ });
}
private boolean performSetItem(String key, String value, boolean isPersistent, boolean allowRetryWhenFull) {
diff --git a/android/sdk/src/main/java/com/taobao/weex/appfram/storage/WXSQLiteOpenHelper.java b/android/sdk/src/main/java/com/taobao/weex/appfram/storage/WXSQLiteOpenHelper.java
index ff67808..4477030 100644
--- a/android/sdk/src/main/java/com/taobao/weex/appfram/storage/WXSQLiteOpenHelper.java
+++ b/android/sdk/src/main/java/com/taobao/weex/appfram/storage/WXSQLiteOpenHelper.java
@@ -150,33 +150,40 @@ public class WXSQLiteOpenHelper extends SQLiteOpenHelper {
if (mDb != null && mDb.isOpen()) {
return;
}
- // Sometimes retrieving the database fails. We do 2 retries: first without database deletion
- // and then with deletion.
- for (int tries = 0; tries < 2; tries++) {
- try {
- if (tries > 0) {
- //delete db and recreate
- deleteDB();
+
+ try {
+ // Sometimes retrieving the database fails. We do 2 retries: first without database deletion
+ // and then with deletion.
+ for (int tries = 0; tries < 2; tries++) {
+ try {
+ if (tries > 0) {
+ //delete db and recreate
+ deleteDB();
+ }
+ mDb = getWritableDatabase();
+ break;
+ } catch (SQLiteException e) {
+ e.printStackTrace();
+ }
+ // Wait before retrying.
+ try {
+ Thread.sleep(SLEEP_TIME_MS);
+ } catch (InterruptedException ie) {
+ Thread.currentThread().interrupt();
}
- mDb = getWritableDatabase();
- break;
- } catch (SQLiteException e) {
- e.printStackTrace();
}
- // Wait before retrying.
- try {
- Thread.sleep(SLEEP_TIME_MS);
- } catch (InterruptedException ie) {
- Thread.currentThread().interrupt();
+ if(mDb == null){
+ return;
}
- }
- if(mDb == null){
- return;
- }
- createTableIfNotExists(mDb);
+ createTableIfNotExists(mDb);
+
+ mDb.setMaximumSize(mMaximumDatabaseSize);
+ } catch (Throwable e) {
+ mDb = null;
+ WXLogUtils.d(TAG_STORAGE,"ensureDatabase failed, throwable = " + e.getMessage());
+ }
- mDb.setMaximumSize(mMaximumDatabaseSize);
}
public synchronized void setMaximumSize(long size) {