Skip to content

Commit

Permalink
汐洛绞架内核以游离态拉起 #71
Browse files Browse the repository at this point in the history
  • Loading branch information
Soltus committed Jun 3, 2024
1 parent b175518 commit 3f6ec23
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 48 deletions.
83 changes: 36 additions & 47 deletions app/src/main/java/org/b3log/siyuan/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,7 @@ private void androidFeedback() {
private final ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className, IBinder service) {
Log.i(TAG, "onServiceConnected invoked");
BootService.LocalBinder binder = (BootService.LocalBinder) service;
bootService = binder.getService();
serviceBound = true;
Expand All @@ -244,19 +245,36 @@ public void onServiceConnected(ComponentName className, IBinder service) {

@Override
public void onServiceDisconnected(ComponentName arg0) {
bootService = null;
serviceBound = false;
webView = null;
Log.i(TAG, "onServiceDisconnected invoked");
releaseBootService();
}
};

private void releaseBootService() {
Log.i(TAG, "releaseBootService invoked");
// 解绑服务
if (serviceBound) {
unbindService(serviceConnection);
serviceBound = false;
bootService = null;
}
// 销毁WebView并从池中移除
if (webViewWrapper != null) {
ViewGroup parent = (ViewGroup) webView.getParent();
parent.removeView(webView); // 从原来的容器中移除WebView
WebViewPool webViewPool = WebViewPool.getInstance();
webViewPool.releaseWebView(webView);
webViewWrapper.destroy();
}
}

// 在这里执行依赖于bootService的代码
private void performActionWithService() {
Log.w(TAG, "performActionWithService invoked");
if (serviceBound && bootService != null) {
webView = bootService.getWebView();
bootService.showWifi(this);
// 初始化 UI 元素
Log.w(TAG, "onStart() -> initUIElements() invoked");
Log.w(TAG, "performActionWithService() -> initUIElements() invoked");
initUIElements();

AppUtils.registerAppStatusChangedListener(this);
Expand Down Expand Up @@ -388,14 +406,25 @@ private void initUIElements() {
bootLogo = findViewById(R.id.bootLogo);
bootProgressBar = findViewById(R.id.progressBar);
bootDetailsText = findViewById(R.id.bootDetails);
webView = bootService.getWebView();
if (webView != null) {
// 设置WebView的布局参数
webView.setLayoutParams(new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.MATCH_PARENT));
webViewContainer = findViewById(R.id.webViewContainer);
if (webView.getParent() == null) {
ViewGroup parent = (ViewGroup) webView.getParent();
if (parent == null) {
Log.d(TAG, "将WebView添加到容器中");
webViewContainer.addView(webView); // 将WebView添加到容器中
} else {
if (parent != webViewContainer) {
Log.d(TAG, "WebView已在其他容器中,先移除再添加");
parent.removeView(webView); // 从原来的容器中移除WebView
} else {
Log.d(TAG, "WebView已在当前容器中,无需再次添加");
}
webViewContainer.addView(webView); // 将WebView添加到当前容器中
}


Expand Down Expand Up @@ -813,25 +842,7 @@ protected void onDestroy() {
EventBus.getDefault().unregister(this);
KeyboardUtils.unregisterSoftInputChangedListener(getWindow());
AppUtils.unregisterAppStatusChangedListener(this);
// if (null != webView) {
// webView.removeAllViews();
// webView.destroy();
// }
// if (null != server) {
// server.stop();
// }
webViewContainer.removeAllViews();
// 解绑服务
if (serviceBound) {
unbindService(serviceConnection);
serviceBound = false;
}
// 销毁WebView并从池中移除
if (webViewWrapper != null) {
WebViewPool webViewPool = WebViewPool.getInstance();
webViewPool.releaseWebView(webView);
webViewWrapper.destroy();
}
releaseBootService();
}

@Override
Expand Down Expand Up @@ -921,28 +932,6 @@ public void RestartSiyuanInWebview() {
}
}


// private void checkWebViewVer(final WebSettings ws) {
// // Android check WebView version 75+ https://github.com/siyuan-note/siyuan/issues/7840
// final String ua = ws.getUserAgentString();
// if (ua.contains("Chrome/")) {
// final int minVer = 95;
// try {
// final String chromeVersion = ua.split("Chrome/")[1].split(" ")[0];
// if (chromeVersion.contains(".")) {
// final String[] chromeVersionParts = chromeVersion.split("\\.");
// webViewVer = chromeVersionParts[0];
// if (Integer.parseInt(webViewVer) < minVer) {
// PopTip.show("WebView version " + webViewVer + " is too low, please upgrade to " + minVer + "+");
// }
// }
// } catch (final Exception e) {
// Utils.LogError("boot", "check webview version failed", e);
// PopTip.show("Check WebView version failed: " + e.getMessage());
// }
// }
// }

private static boolean syncing;

public static void startSyncData() {
Expand Down
1 change: 0 additions & 1 deletion app/src/main/java/sc/windom/sofill/U.kt
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,6 @@ object U {
return signalStrengthLevel
}
fun checkWebViewVer(ws: WebSettings): String {
// Android check WebView version 75+ https://github.com/siyuan-note/siyuan/issues/7840
val ua = ws.userAgentString
var webViewVer = ""
if (ua.contains("Chrome/")) {
Expand Down

0 comments on commit 3f6ec23

Please sign in to comment.