Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
Magisk
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Magisk
Commits
eecb66f4
Commit
eecb66f4
authored
Jun 17, 2020
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Create ForegroundTracker
parent
e7f1c031
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
27 additions
and
42 deletions
+27
-42
App.kt
app/src/main/java/com/topjohnwu/magisk/core/App.kt
+25
-3
RemoteFileService.kt
...a/com/topjohnwu/magisk/core/download/RemoteFileService.kt
+2
-4
ApplicationModule.kt
...rc/main/java/com/topjohnwu/magisk/di/ApplicationModule.kt
+0
-35
No files found.
app/src/main/java/com/topjohnwu/magisk/core/App.kt
View file @
eecb66f4
package
com.topjohnwu.magisk.core
import
android.app.Activity
import
android.app.Application
import
android.content.Context
import
android.content.res.Configuration
import
android.os.Bundle
import
androidx.appcompat.app.AppCompatDelegate
import
androidx.multidex.MultiDex
import
androidx.work.WorkManager
...
...
@@ -12,9 +14,7 @@ import com.topjohnwu.magisk.FileProvider
import
com.topjohnwu.magisk.core.su.SuCallbackHandler
import
com.topjohnwu.magisk.core.utils.RootInit
import
com.topjohnwu.magisk.core.utils.updateConfig
import
com.topjohnwu.magisk.di.ActivityTracker
import
com.topjohnwu.magisk.di.koinModules
import
com.topjohnwu.magisk.extensions.get
import
com.topjohnwu.magisk.extensions.unwrap
import
com.topjohnwu.superuser.Shell
import
org.koin.android.ext.koin.androidContext
...
...
@@ -67,7 +67,7 @@ open class App() : Application() {
modules
(
koinModules
)
}
ResMgr
.
init
(
impl
)
app
.
registerActivityLifecycleCallbacks
(
get
<
ActivityTracker
>()
)
app
.
registerActivityLifecycleCallbacks
(
ForegroundTracker
)
WorkManager
.
initialize
(
impl
.
wrapJob
(),
androidx
.
work
.
Configuration
.
Builder
().
build
())
}
...
...
@@ -82,3 +82,25 @@ open class App() : Application() {
super
.
onConfigurationChanged
(
newConfig
)
}
}
object
ForegroundTracker
:
Application
.
ActivityLifecycleCallbacks
{
@Volatile
var
foreground
:
Activity
?
=
null
val
hasForeground
get
()
=
foreground
!=
null
override
fun
onActivityResumed
(
activity
:
Activity
)
{
foreground
=
activity
}
override
fun
onActivityPaused
(
activity
:
Activity
)
{
foreground
=
null
}
override
fun
onActivityCreated
(
activity
:
Activity
,
bundle
:
Bundle
?)
{}
override
fun
onActivityStarted
(
activity
:
Activity
)
{}
override
fun
onActivityStopped
(
activity
:
Activity
)
{}
override
fun
onActivitySaveInstanceState
(
activity
:
Activity
,
bundle
:
Bundle
)
{}
override
fun
onActivityDestroyed
(
activity
:
Activity
)
{}
}
app/src/main/java/com/topjohnwu/magisk/core/download/RemoteFileService.kt
View file @
eecb66f4
package
com.topjohnwu.magisk.core.download
import
android.app.Activity
import
android.app.Notification
import
android.content.Intent
import
androidx.lifecycle.LiveData
import
androidx.lifecycle.MutableLiveData
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.core.ForegroundTracker
import
com.topjohnwu.magisk.core.utils.ProgressInputStream
import
com.topjohnwu.magisk.core.view.Notifications
import
com.topjohnwu.magisk.data.network.GithubRawServices
import
com.topjohnwu.magisk.di.NullActivity
import
com.topjohnwu.magisk.extensions.get
import
com.topjohnwu.magisk.extensions.subscribeK
import
com.topjohnwu.magisk.extensions.writeTo
import
com.topjohnwu.magisk.model.entity.internal.DownloadSubject
...
...
@@ -47,7 +45,7 @@ abstract class RemoteFileService : NotificationService() {
failNotify
(
subject
)
})
{
val
newId
=
finishNotify
(
subject
)
if
(
get
<
Activity
>()
!
is
NullActivity
)
{
if
(
ForegroundTracker
.
hasForeground
)
{
onFinished
(
subject
,
newId
)
}
}
...
...
app/src/main/java/com/topjohnwu/magisk/di/ApplicationModule.kt
View file @
eecb66f4
package
com.topjohnwu.magisk.di
import
android.annotation.SuppressLint
import
android.app.Activity
import
android.app.Application
import
android.content.Context
import
android.os.Build
import
android.os.Bundle
import
androidx.localbroadcastmanager.content.LocalBroadcastManager
import
androidx.preference.PreferenceManager
import
com.topjohnwu.magisk.core.ResMgr
...
...
@@ -23,8 +19,6 @@ val applicationModule = module {
factory
(
Protected
)
{
createDEContext
(
get
())
}
single
(
SUTimeout
)
{
get
<
Context
>(
Protected
).
getSharedPreferences
(
"su_timeout"
,
0
)
}
single
{
PreferenceManager
.
getDefaultSharedPreferences
(
get
<
Context
>(
Protected
))
}
single
{
ActivityTracker
()
}
factory
{
get
<
ActivityTracker
>().
foreground
?:
NullActivity
}
single
{
LocalBroadcastManager
.
getInstance
(
get
())
}
}
...
...
@@ -33,32 +27,3 @@ private fun createDEContext(context: Context): Context {
context
.
createDeviceProtectedStorageContext
()
else
context
}
class
ActivityTracker
:
Application
.
ActivityLifecycleCallbacks
{
@Volatile
var
foreground
:
Activity
?
=
null
override
fun
onActivityCreated
(
activity
:
Activity
,
bundle
:
Bundle
?)
{}
override
fun
onActivityStarted
(
activity
:
Activity
)
{}
@Synchronized
override
fun
onActivityResumed
(
activity
:
Activity
)
{
foreground
=
activity
}
@Synchronized
override
fun
onActivityPaused
(
activity
:
Activity
)
{
foreground
=
null
}
override
fun
onActivityStopped
(
activity
:
Activity
)
{}
override
fun
onActivitySaveInstanceState
(
activity
:
Activity
,
bundle
:
Bundle
)
{}
override
fun
onActivityDestroyed
(
activity
:
Activity
)
{}
}
@SuppressLint
(
"Registered"
)
object
NullActivity
:
Activity
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment