Skip to content

Commit

Permalink
思源汐洛版内核以游离态拉起 #71
Browse files Browse the repository at this point in the history
  • Loading branch information
Soltus committed Jun 2, 2024
1 parent 8280357 commit 2fec75a
Show file tree
Hide file tree
Showing 12 changed files with 784 additions and 351 deletions.
14 changes: 14 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,7 @@ dependencies {
def media3_version = "1.3.0"
def biometric_version = "1.2.0-alpha05"
def lifecycle_version = "2.7.0"
def work_version = "2.9.0"
// Sillot 仅需兼容 Android 11+ ,放心升级,无需理会下面的不要升级警告(仅针对 Android 版本)
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.10.0'
Expand Down Expand Up @@ -405,4 +406,17 @@ dependencies {

implementation 'org.jsoup:jsoup:1.17.2'
implementation 'org.commonmark:commonmark:0.22.0'

// (Java only)
// implementation "androidx.work:work-runtime:$work_version"
// Kotlin + coroutines
implementation "androidx.work:work-runtime-ktx:$work_version"
// optional - RxJava2 support
// implementation "androidx.work:work-rxjava2:$work_version"
// optional - GCMNetworkManager support
// implementation "androidx.work:work-gcm:$work_version"
// optional - Test helpers
// androidTestImplementation "androidx.work:work-testing:$work_version"
// optional - Multiprocess support
// implementation "androidx.work:work-multiprocess:$work_version"
}
6 changes: 6 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -581,6 +581,12 @@
android:value="hosting" />
</service>

<service
android:name=".services.BootService"
android:foregroundServiceType="dataSync|location"
android:enabled="true"
android:exported="true"
android:permission="TODO" />

<!-- Support opening assets through other apps on the Android https://github.com/siyuan-note/siyuan/issues/10657 -->
<provider
Expand Down
156 changes: 118 additions & 38 deletions app/src/main/java/org/b3log/siyuan/App.kt
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import sc.windom.sofill.U
import java.net.InetAddress
import java.net.UnknownHostException


// 定义RealmConfiguration,通常在应用启动时初始化
val realmConfig = RealmConfiguration.Builder(setOf(ProviderCache::class))
.build()
Expand All @@ -40,9 +41,11 @@ val app by lazy { App.application }

class App : Application() {
var TAG = "App"

companion object {
@Volatile
private var instance: App? = null

@JvmStatic
fun getInstance(): App { // 兼容 java 代码,在 kotlin 也需用这个
return instance ?: synchronized(this) {
Expand All @@ -53,6 +56,7 @@ class App : Application() {
// 2. `synchronized(this) { ... }`:这是一个同步代码块,它确保在多线程环境中,只有一个线程能够进入这个代码块执行。`this`指的是`App`类的伴生对象,也就是`Companion`对象。这个同步块是必要的,因为在多线程情况下,可能会有多个线程同时尝试创建`App`的实例,同步块确保了这种情况下的线程安全。
// 3. `instance ?: App().also { instance = it }`:这是同步代码块中的代码。首先,它再次检查`instance`是否为`null`(这是必要的,因为可能在等待进入同步块的时候,另一个线程已经创建了实例)。如果`instance`仍然为`null`,则创建一个新的`App`实例,并使用`also`函数将其赋值给`instance`。`also`函数返回它接收的参数,因此这里返回的是新创建的`App`实例。
}

lateinit var application: Application
private set // 确保application只能在App类内部被设置

Expand All @@ -67,8 +71,9 @@ class App : Application() {
val isMainThread: Boolean
get() = Looper.getMainLooper().thread.id == Thread.currentThread().id
}

override fun onCreate() {
Log.e(TAG,"new one")
Log.e(TAG, "new one")
super.onCreate()
var refCount = 0
Utils.init(this)
Expand All @@ -79,106 +84,169 @@ class App : Application() {
PushManager.startWork(this, PushConstants.LOGIN_TYPE_API_KEY, S.initBaiduPushID);
registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
override fun onActivityPaused(activity: Activity) {
Log.w(TAG, "onActivityPaused() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityPaused() invoked -> Activity : ${activity.javaClass.simpleName}"
)
}

override fun onActivityStarted(activity: Activity) {
Log.w(TAG, "onActivityStarted() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityStarted() invoked -> Activity : ${activity.javaClass.simpleName}"
)
refCount++
}

override fun onActivityDestroyed(activity: Activity) {
Log.w(TAG, "onActivityDestroyed() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityDestroyed() invoked -> Activity : ${activity.javaClass.simpleName}"
)
}

override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
Log.w(TAG, "onActivitySaveInstanceState() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivitySaveInstanceState() invoked -> Activity : ${activity.javaClass.simpleName}"
)
}

override fun onActivityStopped(activity: Activity) {
Log.w(TAG, "onActivityStopped() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityStopped() invoked -> Activity : ${activity.javaClass.simpleName}"
)
refCount--
if (refCount == 0) {
ForegroundPushManager.showNotification(this@App)
}
}

override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
Log.w(TAG, "onActivityCreated() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityCreated() invoked -> Activity : ${activity.javaClass.simpleName}"
)
}

override fun onActivityResumed(activity: Activity) {
Log.w(TAG, "onActivityResumed() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityResumed() invoked -> Activity : ${activity.javaClass.simpleName}"
)
ForegroundPushManager.stopNotification(this@App)
}

override fun onActivityPreDestroyed(activity: Activity) {
Log.w(TAG, "onActivityPreDestroyed() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityPreDestroyed() invoked -> Activity : ${activity.javaClass.simpleName}"
)
super.onActivityPreDestroyed(activity)
}

override fun onActivityPreCreated(activity: Activity, savedInstanceState: Bundle?) {
Log.w(TAG, "onActivityPreCreated() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityPreCreated() invoked -> Activity : ${activity.javaClass.simpleName}"
)
super.onActivityPreCreated(activity, savedInstanceState)
}

override fun onActivityPreStarted(activity: Activity) {
Log.w(TAG, "onActivityPreStarted() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityPreStarted() invoked -> Activity : ${activity.javaClass.simpleName}"
)
super.onActivityPreStarted(activity)
}

override fun onActivityPreStopped(activity: Activity) {
Log.w(TAG, "onActivityPreStopped() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityPreStopped() invoked -> Activity : ${activity.javaClass.simpleName}"
)
super.onActivityPreStopped(activity)
}

override fun onActivityPrePaused(activity: Activity) {
Log.w(TAG, "onActivityPrePaused() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityPrePaused() invoked -> Activity : ${activity.javaClass.simpleName}"
)
super.onActivityPrePaused(activity)
}

override fun onActivityPreResumed(activity: Activity) {
Log.w(TAG, "onActivityPreResumed() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityPreResumed() invoked -> Activity : ${activity.javaClass.simpleName}"
)
super.onActivityPreResumed(activity)
}

override fun onActivityPostCreated(activity: Activity, savedInstanceState: Bundle?) {
Log.w(TAG, "onActivityPostCreated() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityPostCreated() invoked -> Activity : ${activity.javaClass.simpleName}"
)
super.onActivityPostCreated(activity, savedInstanceState)
}

override fun onActivityPostDestroyed(activity: Activity) {
Log.w(TAG, "onActivityPostDestroyed() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityPostDestroyed() invoked -> Activity : ${activity.javaClass.simpleName}"
)
super.onActivityPostDestroyed(activity)
}

override fun onActivityPostPaused(activity: Activity) {
Log.w(TAG, "onActivityPostPaused() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityPostPaused() invoked -> Activity : ${activity.javaClass.simpleName}"
)
super.onActivityPostPaused(activity)
}

override fun onActivityPostSaveInstanceState(activity: Activity, outState: Bundle) {
Log.w(TAG, "onActivityPostSaveInstanceState() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityPostSaveInstanceState() invoked -> Activity : ${activity.javaClass.simpleName}"
)
super.onActivityPostSaveInstanceState(activity, outState)
}

override fun onActivityPostResumed(activity: Activity) {
Log.w(TAG, "onActivityPostResumed() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityPostResumed() invoked -> Activity : ${activity.javaClass.simpleName}"
)
super.onActivityPostResumed(activity)
}

override fun onActivityPostStarted(activity: Activity) {
Log.w(TAG, "onActivityPostStarted() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityPostStarted() invoked -> Activity : ${activity.javaClass.simpleName}"
)
super.onActivityPostStarted(activity)
}

override fun onActivityPostStopped(activity: Activity) {
Log.w(TAG, "onActivityPostStopped() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityPostStopped() invoked -> Activity : ${activity.javaClass.simpleName}"
)
super.onActivityPostStopped(activity)
}

override fun onActivityPreSaveInstanceState(activity: Activity, outState: Bundle) {
Log.w(TAG, "onActivityPreSaveInstanceState() invoked -> Activity : ${activity.javaClass.simpleName}")
Log.w(
TAG,
"onActivityPreSaveInstanceState() invoked -> Activity : ${activity.javaClass.simpleName}"
)
super.onActivityPreSaveInstanceState(activity, outState)
}

Expand All @@ -191,28 +259,38 @@ class App : Application() {
}
}

override fun attachBaseContext(base: Context?) { // 在onCreate方法之前。这个方法的目的是将应用程序的上下文与它的基类上下文关联起来。
super.attachBaseContext(base)
application = this
CrashReport.initCrashReport(this, S.initCrashReportID, true) // 初始化 bugly
val configClarity = ClarityConfig(projectId="gqgzluae5t",logLevel= LogLevel.Warning)
Clarity.initialize(this, configClarity) // 初始化 Clarity
}
fun reportException(throwable: Throwable?) {
// Ensure throwable is not null before reporting
throwable?.let {
// 主动上传到 bugly
CrashReport.postCatchedException(it)
}
}

}
override fun onLowMemory() {
super.onLowMemory()
Log.w(
TAG,
"onLowMemory() invoked"
)
}

override fun attachBaseContext(base: Context?) { // 在onCreate方法之前。这个方法的目的是将应用程序的上下文与它的基类上下文关联起来。
super.attachBaseContext(base)
application = this
CrashReport.initCrashReport(this, S.initCrashReportID, true) // 初始化 bugly
val configClarity = ClarityConfig(projectId = "gqgzluae5t", logLevel = LogLevel.Warning)
Clarity.initialize(this, configClarity) // 初始化 Clarity
}

fun reportException(throwable: Throwable?) {
// Ensure throwable is not null before reporting
throwable?.let {
// 主动上传到 bugly
CrashReport.postCatchedException(it)
}
}

}

open class ProviderCache : RealmObject {
@PrimaryKey
var id: Long = 0

var path: String = ""

@Ignore
var status: Status = Status.PADDING
var modifier: String = ""
Expand All @@ -223,9 +301,11 @@ open class ProviderCache : RealmObject {
DONE
}
}

open class ServerLogRealm : RealmObject {
@PrimaryKey
var id: Long = 0

@Ignore
var level: LogLevel = LogLevel.INFO
var message: String = ""
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/org/b3log/siyuan/JSAndroid.java
Original file line number Diff line number Diff line change
Expand Up @@ -431,7 +431,7 @@ public void exitSillotAndroid() {
public void androidReboot() {
Log.d("JSAndroid", "restartSillotAndroid() invoked");
runOnUiThread(() -> {
activity.bootKernel("");
// activity.bootKernel("");
// activity.showBootIndex();
});
}
Expand Down
Loading

0 comments on commit 2fec75a

Please sign in to comment.