Async loading of homepage, delegate IOThread responsibility to BrowserApp class
This commit is contained in:
parent
e06d530528
commit
7318a818c4
@ -1342,7 +1342,7 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
|
|||||||
if (UrlUtils.isSpecialUrl(url)) {
|
if (UrlUtils.isSpecialUrl(url)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
BrowserApp.getHistoryDatabase().getIOThread().execute(new Runnable() {
|
BrowserApp.getIOThread().execute(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
@ -1406,7 +1406,7 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
|
|||||||
*/
|
*/
|
||||||
private void openHistory() {
|
private void openHistory() {
|
||||||
// use a thread so that history retrieval doesn't block the UI
|
// use a thread so that history retrieval doesn't block the UI
|
||||||
BrowserApp.getHistoryDatabase().getIOThread().execute(new Runnable() {
|
BrowserApp.getIOThread().execute(new Runnable() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
@ -6,6 +6,9 @@ import android.content.Context;
|
|||||||
import com.squareup.leakcanary.LeakCanary;
|
import com.squareup.leakcanary.LeakCanary;
|
||||||
import com.squareup.otto.Bus;
|
import com.squareup.otto.Bus;
|
||||||
|
|
||||||
|
import java.util.concurrent.Executor;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
import acr.browser.lightning.constant.BookmarkPage;
|
import acr.browser.lightning.constant.BookmarkPage;
|
||||||
import acr.browser.lightning.database.HistoryDatabase;
|
import acr.browser.lightning.database.HistoryDatabase;
|
||||||
import acr.browser.lightning.preference.PreferenceManager;
|
import acr.browser.lightning.preference.PreferenceManager;
|
||||||
@ -14,6 +17,7 @@ public class BrowserApp extends Application {
|
|||||||
|
|
||||||
private static BrowserApp sInstance;
|
private static BrowserApp sInstance;
|
||||||
private static AppComponent appComponent;
|
private static AppComponent appComponent;
|
||||||
|
private static Executor mIOThread = Executors.newSingleThreadExecutor();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
@ -39,6 +43,10 @@ public class BrowserApp extends Application {
|
|||||||
return appComponent.getHistoryDatabase();
|
return appComponent.getHistoryDatabase();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Executor getIOThread() {
|
||||||
|
return mIOThread;
|
||||||
|
}
|
||||||
|
|
||||||
public static PreferenceManager getPreferenceManager() {
|
public static PreferenceManager getPreferenceManager() {
|
||||||
return appComponent.getPreferenceManager();
|
return appComponent.getPreferenceManager();
|
||||||
}
|
}
|
||||||
|
@ -42,8 +42,6 @@ public class HistoryDatabase extends SQLiteOpenHelper {
|
|||||||
|
|
||||||
private SQLiteDatabase mDatabase;
|
private SQLiteDatabase mDatabase;
|
||||||
|
|
||||||
private Executor mIOThread = Executors.newSingleThreadExecutor();
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public HistoryDatabase(Context context) {
|
public HistoryDatabase(Context context) {
|
||||||
super(context.getApplicationContext(), DATABASE_NAME, null, DATABASE_VERSION);
|
super(context.getApplicationContext(), DATABASE_NAME, null, DATABASE_VERSION);
|
||||||
@ -78,10 +76,6 @@ public class HistoryDatabase extends SQLiteOpenHelper {
|
|||||||
return mDatabase == null || !mDatabase.isOpen();
|
return mDatabase == null || !mDatabase.isOpen();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Executor getIOThread() {
|
|
||||||
return mIOThread;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized void close() {
|
public synchronized void close() {
|
||||||
if (mDatabase != null) {
|
if (mDatabase != null) {
|
||||||
|
@ -149,14 +149,12 @@ public class PrivacySettingsFragment extends LightningPreferenceFragment impleme
|
|||||||
new DialogInterface.OnClickListener() {
|
new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface arg0, int arg1) {
|
public void onClick(DialogInterface arg0, int arg1) {
|
||||||
BrowserApp.getHistoryDatabase()
|
BrowserApp.getIOThread().execute(new Runnable() {
|
||||||
.getIOThread()
|
@Override
|
||||||
.execute(new Runnable() {
|
public void run() {
|
||||||
@Override
|
clearHistory();
|
||||||
public void run() {
|
}
|
||||||
clearHistory();
|
});
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.setNegativeButton(getResources().getString(R.string.action_no), null).show();
|
.setNegativeButton(getResources().getString(R.string.action_no), null).show();
|
||||||
|
@ -147,38 +147,66 @@ public class LightningView {
|
|||||||
if (mWebView == null) {
|
if (mWebView == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (mHomepage.startsWith("about:home")) {
|
switch (mHomepage) {
|
||||||
mWebView.loadUrl(StartPage.getHomepage(mActivity), mRequestHeaders);
|
case "about:home":
|
||||||
} else if (mHomepage.startsWith("about:bookmarks")) {
|
loadStartpage();
|
||||||
loadBookmarkpage();
|
break;
|
||||||
} else {
|
case "about:bookmarks":
|
||||||
mWebView.loadUrl(mHomepage, mRequestHeaders);
|
loadBookmarkpage();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
mWebView.loadUrl(mHomepage, mRequestHeaders);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void loadStartpage() {
|
||||||
|
BrowserApp.getIOThread().execute(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
final String homepage = StartPage.getHomepage(mActivity);
|
||||||
|
mActivity.runOnUiThread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
mWebView.loadUrl(homepage, mRequestHeaders);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load the HTML bookmarks page in this view
|
* Load the HTML bookmarks page in this view
|
||||||
*/
|
*/
|
||||||
public void loadBookmarkpage() {
|
public void loadBookmarkpage() {
|
||||||
if (mWebView == null)
|
if (mWebView == null)
|
||||||
return;
|
return;
|
||||||
Bitmap folderIcon = ThemeUtils.getThemedBitmap(mActivity, R.drawable.ic_folder, false);
|
BrowserApp.getIOThread().execute(new Runnable() {
|
||||||
FileOutputStream outputStream = null;
|
@Override
|
||||||
File image = new File(mActivity.getCacheDir(), "folder.png");
|
public void run() {
|
||||||
try {
|
Bitmap folderIcon = ThemeUtils.getThemedBitmap(mActivity, R.drawable.ic_folder, false);
|
||||||
outputStream = new FileOutputStream(image);
|
FileOutputStream outputStream = null;
|
||||||
folderIcon.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
|
File image = new File(mActivity.getCacheDir(), "folder.png");
|
||||||
folderIcon.recycle();
|
try {
|
||||||
} catch (FileNotFoundException e) {
|
outputStream = new FileOutputStream(image);
|
||||||
e.printStackTrace();
|
folderIcon.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
|
||||||
} finally {
|
folderIcon.recycle();
|
||||||
Utils.close(outputStream);
|
} catch (FileNotFoundException e) {
|
||||||
}
|
e.printStackTrace();
|
||||||
File bookmarkWebPage = new File(mActivity.getFilesDir(), BookmarkPage.FILENAME);
|
} finally {
|
||||||
|
Utils.close(outputStream);
|
||||||
BrowserApp.getBookmarkPage().buildBookmarkPage(null);
|
}
|
||||||
mWebView.loadUrl(Constants.FILE + bookmarkWebPage, mRequestHeaders);
|
final File bookmarkWebPage = new File(mActivity.getFilesDir(), BookmarkPage.FILENAME);
|
||||||
|
|
||||||
|
BrowserApp.getBookmarkPage().buildBookmarkPage(null);
|
||||||
|
mActivity.runOnUiThread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
mWebView.loadUrl(Constants.FILE + bookmarkWebPage, mRequestHeaders);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user