Make TelephonyManager and EuiccChannelManager lazy

This commit is contained in:
Peter Cai 2022-05-02 21:29:21 -04:00
parent 6451e0a0d6
commit fb1f698398
4 changed files with 22 additions and 6 deletions

View File

@ -1,8 +1,15 @@
package im.angry.openeuicc
import android.app.Application
import android.telephony.TelephonyManager
import im.angry.openeuicc.core.EuiccChannelManager
class OpenEUICCApplication : Application() {
val euiccChannelManager = EuiccChannelManager(this)
val telephonyManager by lazy {
getSystemService(TelephonyManager::class.java)!!
}
val euiccChannelManager by lazy {
EuiccChannelManager(this)
}
}

View File

@ -2,9 +2,9 @@ package im.angry.openeuicc.ui
import android.os.Bundle
import androidx.fragment.app.Fragment
import im.angry.openeuicc.OpenEUICCApplication
import im.angry.openeuicc.core.EuiccChannel
import im.angry.openeuicc.core.EuiccChannelManager
import im.angry.openeuicc.util.openEuiccApplication
interface EuiccFragmentMarker
@ -20,7 +20,7 @@ val <T> T.slotId: Int where T: Fragment, T: EuiccFragmentMarker
get() = requireArguments().getInt("slotId")
val <T> T.euiccChannelManager: EuiccChannelManager where T: Fragment, T: EuiccFragmentMarker
get() = (requireActivity().application as OpenEUICCApplication).euiccChannelManager
get() = openEuiccApplication.euiccChannelManager
val <T> T.channel: EuiccChannel where T: Fragment, T: EuiccFragmentMarker
get() =

View File

@ -12,11 +12,11 @@ import android.widget.Spinner
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import im.angry.openeuicc.OpenEUICCApplication
import im.angry.openeuicc.R
import im.angry.openeuicc.core.EuiccChannelManager
import im.angry.openeuicc.databinding.ActivityMainBinding
import im.angry.openeuicc.util.dsdsEnabled
import im.angry.openeuicc.util.openEuiccApplication
import im.angry.openeuicc.util.supportsDSDS
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@ -43,9 +43,9 @@ class MainActivity : AppCompatActivity() {
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
tm = getSystemService(TelephonyManager::class.java)
tm = openEuiccApplication.telephonyManager
manager = (application as OpenEUICCApplication).euiccChannelManager
manager = openEuiccApplication.euiccChannelManager
spinnerAdapter = ArrayAdapter<String>(this, android.R.layout.simple_spinner_item)

View File

@ -1,9 +1,18 @@
package im.angry.openeuicc.util
import android.app.Activity
import android.content.res.Resources
import android.graphics.Rect
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment
import im.angry.openeuicc.OpenEUICCApplication
val Activity.openEuiccApplication: OpenEUICCApplication
get() = application as OpenEUICCApplication
val Fragment.openEuiccApplication: OpenEUICCApplication
get() = requireActivity().openEuiccApplication
// Source: <https://stackoverflow.com/questions/12478520/how-to-set-dialogfragments-width-and-height>
/**