@@ -4,12 +4,10 @@ import android.app.ActivityManager
44import android.app.ITaskStackListener
55import android.content.ComponentName
66import android.os.Parcel
7- import kotlinx.atomicfu.atomic
8- import kotlinx.atomicfu.updateAndGet
97import li.songe.gkd.a11y.ActivityScene
108import li.songe.gkd.a11y.updateTopActivity
119
12- class FixedTaskStackListener : ITaskStackListener .Stub () {
10+ object FixedTaskStackListener : ITaskStackListener.Stub() {
1311
1412 // https://github.com/gkd-kit/gkd/issues/941#issuecomment-2784035441
1513 override fun onTransact (code : Int , data : Parcel , reply : Parcel ? , flags : Int ): Boolean = try {
@@ -20,16 +18,11 @@ class FixedTaskStackListener : ITaskStackListener.Stub() {
2018
2119 override fun onTaskStackChanged () {
2220 val cpn = shizukuContextFlow.value.topCpn() ? : return
23- if (lastFront.value.first > 0 ) {
24- val t = System .currentTimeMillis()
25- val skip = defaultFront == = lastFront.updateAndGet {
26- if (it.first > 0 && t - it.first < 200 && it.second == cpn) {
27- defaultFront
28- } else {
29- it
30- }
21+ synchronized(this ) {
22+ if (lastFront.first > 0 && lastFront.second == cpn && System .currentTimeMillis() - lastFront.first > 200 ) {
23+ lastFront = defaultFront
24+ return
3125 }
32- if (skip) return
3326 }
3427 updateTopActivity(
3528 appId = cpn.packageName,
@@ -39,10 +32,12 @@ class FixedTaskStackListener : ITaskStackListener.Stub() {
3932 }
4033
4134 private val defaultFront = 0L to ComponentName (" " , " " )
42- private val lastFront = atomic( defaultFront)
35+ private var lastFront = defaultFront
4336 private fun onTaskMovedToFrontCompat (cpn : ComponentName ? = null) {
4437 val cpn = cpn ? : shizukuContextFlow.value.topCpn() ? : return
45- lastFront.value = System .currentTimeMillis() to cpn
38+ synchronized(this ) {
39+ lastFront = System .currentTimeMillis() to cpn
40+ }
4641 updateTopActivity(
4742 appId = cpn.packageName,
4843 activityId = cpn.className,
0 commit comments