Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
com.ccwangluo.accelerator
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sheteng
com.ccwangluo.accelerator
Commits
075225db
Commit
075225db
authored
Jan 24, 2019
by
Mygod
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove handler from Core
parent
b4d003f0
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
27 additions
and
31 deletions
+27
-31
core/src/main/java/com/github/shadowsocks/Core.kt
core/src/main/java/com/github/shadowsocks/Core.kt
+0
-5
core/src/main/java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt
...java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt
+7
-6
core/src/main/java/com/github/shadowsocks/bg/BaseService.kt
core/src/main/java/com/github/shadowsocks/bg/BaseService.kt
+4
-4
mobile/src/main/java/com/github/shadowsocks/MainActivity.kt
mobile/src/main/java/com/github/shadowsocks/MainActivity.kt
+9
-9
tv/src/main/java/com/github/shadowsocks/tv/MainPreferenceFragment.kt
.../java/com/github/shadowsocks/tv/MainPreferenceFragment.kt
+7
-7
No files found.
core/src/main/java/com/github/shadowsocks/Core.kt
View file @
075225db
...
@@ -32,8 +32,6 @@ import android.content.IntentFilter
...
@@ -32,8 +32,6 @@ import android.content.IntentFilter
import
android.content.pm.PackageInfo
import
android.content.pm.PackageInfo
import
android.content.pm.PackageManager
import
android.content.pm.PackageManager
import
android.os.Build
import
android.os.Build
import
android.os.Handler
import
android.os.Looper
import
android.os.UserManager
import
android.os.UserManager
import
androidx.annotation.RequiresApi
import
androidx.annotation.RequiresApi
import
androidx.core.content.ContextCompat
import
androidx.core.content.ContextCompat
...
@@ -51,8 +49,6 @@ import com.github.shadowsocks.utils.*
...
@@ -51,8 +49,6 @@ import com.github.shadowsocks.utils.*
import
com.google.firebase.FirebaseApp
import
com.google.firebase.FirebaseApp
import
com.google.firebase.analytics.FirebaseAnalytics
import
com.google.firebase.analytics.FirebaseAnalytics
import
io.fabric.sdk.android.Fabric
import
io.fabric.sdk.android.Fabric
import
kotlinx.coroutines.CoroutineScope
import
kotlinx.coroutines.Dispatchers
import
java.io.File
import
java.io.File
import
java.io.IOException
import
java.io.IOException
import
kotlin.reflect.KClass
import
kotlin.reflect.KClass
...
@@ -62,7 +58,6 @@ object Core {
...
@@ -62,7 +58,6 @@ object Core {
lateinit
var
app
:
Application
lateinit
var
app
:
Application
lateinit
var
configureIntent
:
(
Context
)
->
PendingIntent
lateinit
var
configureIntent
:
(
Context
)
->
PendingIntent
val
handler
by
lazy
{
Handler
(
Looper
.
getMainLooper
())
}
val
packageInfo
:
PackageInfo
by
lazy
{
getPackageInfo
(
app
.
packageName
)
}
val
packageInfo
:
PackageInfo
by
lazy
{
getPackageInfo
(
app
.
packageName
)
}
val
deviceStorage
by
lazy
{
if
(
Build
.
VERSION
.
SDK_INT
<
24
)
app
else
DeviceStorageApp
(
app
)
}
val
deviceStorage
by
lazy
{
if
(
Build
.
VERSION
.
SDK_INT
<
24
)
app
else
DeviceStorageApp
(
app
)
}
val
analytics
:
FirebaseAnalytics
by
lazy
{
FirebaseAnalytics
.
getInstance
(
deviceStorage
)
}
val
analytics
:
FirebaseAnalytics
by
lazy
{
FirebaseAnalytics
.
getInstance
(
deviceStorage
)
}
...
...
core/src/main/java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt
View file @
075225db
...
@@ -25,9 +25,9 @@ import android.content.Context
...
@@ -25,9 +25,9 @@ import android.content.Context
import
android.content.Intent
import
android.content.Intent
import
android.content.ServiceConnection
import
android.content.ServiceConnection
import
android.os.DeadObjectException
import
android.os.DeadObjectException
import
android.os.Handler
import
android.os.IBinder
import
android.os.IBinder
import
android.os.RemoteException
import
android.os.RemoteException
import
com.github.shadowsocks.Core
import
com.github.shadowsocks.bg.ProxyService
import
com.github.shadowsocks.bg.ProxyService
import
com.github.shadowsocks.bg.TransproxyService
import
com.github.shadowsocks.bg.TransproxyService
import
com.github.shadowsocks.bg.VpnService
import
com.github.shadowsocks.bg.VpnService
...
@@ -38,7 +38,8 @@ import com.github.shadowsocks.utils.Key
...
@@ -38,7 +38,8 @@ import com.github.shadowsocks.utils.Key
/**
/**
* This object should be compact as it will not get GC-ed.
* This object should be compact as it will not get GC-ed.
*/
*/
class
ShadowsocksConnection
(
private
var
listenForDeath
:
Boolean
=
false
)
:
ServiceConnection
,
IBinder
.
DeathRecipient
{
class
ShadowsocksConnection
(
private
val
handler
:
Handler
=
Handler
(),
private
var
listenForDeath
:
Boolean
=
false
)
:
ServiceConnection
,
IBinder
.
DeathRecipient
{
companion
object
{
companion
object
{
val
serviceClass
get
()
=
when
(
DataStore
.
serviceMode
)
{
val
serviceClass
get
()
=
when
(
DataStore
.
serviceMode
)
{
Key
.
modeProxy
->
ProxyService
::
class
Key
.
modeProxy
->
ProxyService
::
class
...
@@ -66,13 +67,13 @@ class ShadowsocksConnection(private var listenForDeath: Boolean = false) : Servi
...
@@ -66,13 +67,13 @@ class ShadowsocksConnection(private var listenForDeath: Boolean = false) : Servi
private
var
callback
:
Callback
?
=
null
private
var
callback
:
Callback
?
=
null
private
val
serviceCallback
=
object
:
IShadowsocksServiceCallback
.
Stub
()
{
private
val
serviceCallback
=
object
:
IShadowsocksServiceCallback
.
Stub
()
{
override
fun
stateChanged
(
state
:
Int
,
profileName
:
String
?,
msg
:
String
?)
{
override
fun
stateChanged
(
state
:
Int
,
profileName
:
String
?,
msg
:
String
?)
{
Core
.
handler
.
post
{
callback
!!
.
stateChanged
(
state
,
profileName
,
msg
)
}
handler
.
post
{
callback
!!
.
stateChanged
(
state
,
profileName
,
msg
)
}
}
}
override
fun
trafficUpdated
(
profileId
:
Long
,
stats
:
TrafficStats
)
{
override
fun
trafficUpdated
(
profileId
:
Long
,
stats
:
TrafficStats
)
{
Core
.
handler
.
post
{
callback
!!
.
trafficUpdated
(
profileId
,
stats
)
}
handler
.
post
{
callback
!!
.
trafficUpdated
(
profileId
,
stats
)
}
}
}
override
fun
trafficPersisted
(
profileId
:
Long
)
{
override
fun
trafficPersisted
(
profileId
:
Long
)
{
Core
.
handler
.
post
{
callback
!!
.
trafficPersisted
(
profileId
)
}
handler
.
post
{
callback
!!
.
trafficPersisted
(
profileId
)
}
}
}
}
}
private
var
binder
:
IBinder
?
=
null
private
var
binder
:
IBinder
?
=
null
...
@@ -110,7 +111,7 @@ class ShadowsocksConnection(private var listenForDeath: Boolean = false) : Servi
...
@@ -110,7 +111,7 @@ class ShadowsocksConnection(private var listenForDeath: Boolean = false) : Servi
override
fun
binderDied
()
{
override
fun
binderDied
()
{
service
=
null
service
=
null
callback
!!
.
onBinderDied
(
)
handler
.
post
(
callback
!!::
onBinderDied
)
}
}
private
fun
unregisterCallback
()
{
private
fun
unregisterCallback
()
{
...
...
core/src/main/java/com/github/shadowsocks/bg/BaseService.kt
View file @
075225db
...
@@ -92,6 +92,7 @@ object BaseService {
...
@@ -92,6 +92,7 @@ object BaseService {
class
Binder
(
private
var
data
:
Data
?
=
null
)
:
IShadowsocksService
.
Stub
(),
AutoCloseable
{
class
Binder
(
private
var
data
:
Data
?
=
null
)
:
IShadowsocksService
.
Stub
(),
AutoCloseable
{
val
callbacks
=
RemoteCallbackList
<
IShadowsocksServiceCallback
>()
val
callbacks
=
RemoteCallbackList
<
IShadowsocksServiceCallback
>()
private
val
bandwidthListeners
=
HashSet
<
IBinder
>()
// the binder is the real identifier
private
val
bandwidthListeners
=
HashSet
<
IBinder
>()
// the binder is the real identifier
private
val
handler
=
Handler
()
override
fun
getState
():
Int
=
data
!!
.
state
override
fun
getState
():
Int
=
data
!!
.
state
override
fun
getProfileName
():
String
=
data
!!
.
proxy
?.
profile
?.
name
?:
"Idle"
override
fun
getProfileName
():
String
=
data
!!
.
proxy
?.
profile
?.
name
?:
"Idle"
...
@@ -111,8 +112,7 @@ object BaseService {
...
@@ -111,8 +112,7 @@ object BaseService {
callbacks
.
finishBroadcast
()
callbacks
.
finishBroadcast
()
}
}
private
fun
registerTimeout
()
=
private
fun
registerTimeout
()
=
handler
.
postDelayed
(
this
::
onTimeout
,
1000
)
Core
.
handler
.
postAtTime
(
this
::
onTimeout
,
this
,
SystemClock
.
uptimeMillis
()
+
1000
)
private
fun
onTimeout
()
{
private
fun
onTimeout
()
{
val
proxies
=
listOfNotNull
(
data
!!
.
proxy
,
data
!!
.
udpFallback
)
val
proxies
=
listOfNotNull
(
data
!!
.
proxy
,
data
!!
.
udpFallback
)
val
stats
=
proxies
val
stats
=
proxies
...
@@ -158,7 +158,7 @@ object BaseService {
...
@@ -158,7 +158,7 @@ object BaseService {
override
fun
stopListeningForBandwidth
(
cb
:
IShadowsocksServiceCallback
)
{
override
fun
stopListeningForBandwidth
(
cb
:
IShadowsocksServiceCallback
)
{
if
(
bandwidthListeners
.
remove
(
cb
.
asBinder
())
&&
bandwidthListeners
.
isEmpty
())
{
if
(
bandwidthListeners
.
remove
(
cb
.
asBinder
())
&&
bandwidthListeners
.
isEmpty
())
{
Core
.
handler
.
removeCallbacksAndMessages
(
this
)
handler
.
removeCallbacksAndMessages
(
null
)
}
}
}
}
...
@@ -180,7 +180,7 @@ object BaseService {
...
@@ -180,7 +180,7 @@ object BaseService {
override
fun
close
()
{
override
fun
close
()
{
callbacks
.
kill
()
callbacks
.
kill
()
Core
.
handler
.
removeCallbacksAndMessages
(
this
)
handler
.
removeCallbacksAndMessages
(
null
)
data
=
null
data
=
null
}
}
}
}
...
...
mobile/src/main/java/com/github/shadowsocks/MainActivity.kt
View file @
075225db
...
@@ -29,6 +29,7 @@ import android.nfc.NdefMessage
...
@@ -29,6 +29,7 @@ import android.nfc.NdefMessage
import
android.nfc.NfcAdapter
import
android.nfc.NfcAdapter
import
android.os.Bundle
import
android.os.Bundle
import
android.os.DeadObjectException
import
android.os.DeadObjectException
import
android.os.Handler
import
android.util.Log
import
android.util.Log
import
android.view.KeyCharacterMap
import
android.view.KeyCharacterMap
import
android.view.KeyEvent
import
android.view.KeyEvent
...
@@ -124,7 +125,8 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPref
...
@@ -124,7 +125,8 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPref
else
->
Core
.
startService
()
else
->
Core
.
startService
()
}
}
private
val
connection
=
ShadowsocksConnection
(
true
)
private
val
handler
=
Handler
()
private
val
connection
=
ShadowsocksConnection
(
handler
,
true
)
override
fun
onServiceConnected
(
service
:
IShadowsocksService
)
=
changeState
(
try
{
override
fun
onServiceConnected
(
service
:
IShadowsocksService
)
=
changeState
(
try
{
service
.
state
service
.
state
}
catch
(
_
:
DeadObjectException
)
{
}
catch
(
_
:
DeadObjectException
)
{
...
@@ -132,12 +134,10 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPref
...
@@ -132,12 +134,10 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPref
})
})
override
fun
onServiceDisconnected
()
=
changeState
(
BaseService
.
IDLE
)
override
fun
onServiceDisconnected
()
=
changeState
(
BaseService
.
IDLE
)
override
fun
onBinderDied
()
{
override
fun
onBinderDied
()
{
Core
.
handler
.
post
{
connection
.
disconnect
(
this
)
connection
.
disconnect
(
this
)
Executable
.
killAll
()
Executable
.
killAll
()
connection
.
connect
(
this
,
this
)
connection
.
connect
(
this
,
this
)
}
}
}
override
fun
onActivityResult
(
requestCode
:
Int
,
resultCode
:
Int
,
data
:
Intent
?)
{
override
fun
onActivityResult
(
requestCode
:
Int
,
resultCode
:
Int
,
data
:
Intent
?)
{
when
{
when
{
...
@@ -167,7 +167,7 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPref
...
@@ -167,7 +167,7 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPref
fab
.
setOnClickListener
{
toggle
()
}
fab
.
setOnClickListener
{
toggle
()
}
changeState
(
BaseService
.
IDLE
)
// reset everything to init state
changeState
(
BaseService
.
IDLE
)
// reset everything to init state
Core
.
handler
.
post
{
connection
.
connect
(
this
,
this
)
}
connection
.
connect
(
this
,
this
)
DataStore
.
publicStore
.
registerChangeListener
(
this
)
DataStore
.
publicStore
.
registerChangeListener
(
this
)
val
intent
=
this
.
intent
val
intent
=
this
.
intent
...
@@ -205,7 +205,7 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPref
...
@@ -205,7 +205,7 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPref
override
fun
onPreferenceDataStoreChanged
(
store
:
PreferenceDataStore
,
key
:
String
?)
{
override
fun
onPreferenceDataStoreChanged
(
store
:
PreferenceDataStore
,
key
:
String
?)
{
when
(
key
)
{
when
(
key
)
{
Key
.
serviceMode
->
Core
.
handler
.
post
{
Key
.
serviceMode
->
handler
.
post
{
connection
.
disconnect
(
this
)
connection
.
disconnect
(
this
)
connection
.
connect
(
this
,
this
)
connection
.
connect
(
this
,
this
)
}
}
...
@@ -280,6 +280,6 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPref
...
@@ -280,6 +280,6 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPref
DataStore
.
publicStore
.
unregisterChangeListener
(
this
)
DataStore
.
publicStore
.
unregisterChangeListener
(
this
)
connection
.
disconnect
(
this
)
connection
.
disconnect
(
this
)
BackupManager
(
this
).
dataChanged
()
BackupManager
(
this
).
dataChanged
()
Core
.
handler
.
removeCallbacksAndMessages
(
null
)
handler
.
removeCallbacksAndMessages
(
null
)
}
}
}
}
tv/src/main/java/com/github/shadowsocks/tv/MainPreferenceFragment.kt
View file @
075225db
...
@@ -27,6 +27,7 @@ import android.content.Intent
...
@@ -27,6 +27,7 @@ import android.content.Intent
import
android.net.VpnService
import
android.net.VpnService
import
android.os.Bundle
import
android.os.Bundle
import
android.os.DeadObjectException
import
android.os.DeadObjectException
import
android.os.Handler
import
android.text.format.Formatter
import
android.text.format.Formatter
import
android.util.Log
import
android.util.Log
import
android.widget.Toast
import
android.widget.Toast
...
@@ -135,7 +136,8 @@ class MainPreferenceFragment : LeanbackPreferenceFragment(), ShadowsocksConnecti
...
@@ -135,7 +136,8 @@ class MainPreferenceFragment : LeanbackPreferenceFragment(), ShadowsocksConnecti
}
}
}
}
private
val
connection
=
ShadowsocksConnection
(
true
)
private
val
handler
=
Handler
()
private
val
connection
=
ShadowsocksConnection
(
handler
,
true
)
override
fun
onServiceConnected
(
service
:
IShadowsocksService
)
=
changeState
(
try
{
override
fun
onServiceConnected
(
service
:
IShadowsocksService
)
=
changeState
(
try
{
service
.
state
service
.
state
}
catch
(
_
:
DeadObjectException
)
{
}
catch
(
_
:
DeadObjectException
)
{
...
@@ -143,12 +145,10 @@ class MainPreferenceFragment : LeanbackPreferenceFragment(), ShadowsocksConnecti
...
@@ -143,12 +145,10 @@ class MainPreferenceFragment : LeanbackPreferenceFragment(), ShadowsocksConnecti
})
})
override
fun
onServiceDisconnected
()
=
changeState
(
BaseService
.
IDLE
)
override
fun
onServiceDisconnected
()
=
changeState
(
BaseService
.
IDLE
)
override
fun
onBinderDied
()
{
override
fun
onBinderDied
()
{
Core
.
handler
.
post
{
connection
.
disconnect
(
activity
)
connection
.
disconnect
(
activity
)
Executable
.
killAll
()
Executable
.
killAll
()
connection
.
connect
(
activity
,
this
)
connection
.
connect
(
activity
,
this
)
}
}
}
override
fun
onCreatePreferences
(
savedInstanceState
:
Bundle
?,
rootKey
:
String
?)
{
override
fun
onCreatePreferences
(
savedInstanceState
:
Bundle
?,
rootKey
:
String
?)
{
preferenceManager
.
preferenceDataStore
=
DataStore
.
publicStore
preferenceManager
.
preferenceDataStore
=
DataStore
.
publicStore
...
@@ -232,7 +232,7 @@ class MainPreferenceFragment : LeanbackPreferenceFragment(), ShadowsocksConnecti
...
@@ -232,7 +232,7 @@ class MainPreferenceFragment : LeanbackPreferenceFragment(), ShadowsocksConnecti
override
fun
onPreferenceDataStoreChanged
(
store
:
PreferenceDataStore
,
key
:
String
?)
{
override
fun
onPreferenceDataStoreChanged
(
store
:
PreferenceDataStore
,
key
:
String
?)
{
when
(
key
)
{
when
(
key
)
{
Key
.
serviceMode
->
Core
.
handler
.
post
{
Key
.
serviceMode
->
handler
.
post
{
connection
.
disconnect
(
activity
)
connection
.
disconnect
(
activity
)
connection
.
connect
(
activity
,
this
)
connection
.
connect
(
activity
,
this
)
}
}
...
...
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