From 48ce359d2d6a493fd0e6b4e2c16b03eed7a0040e Mon Sep 17 00:00:00 2001 From: Tamim Hossain <132823494+CodeWithTamim@users.noreply.github.com> Date: Sat, 10 Aug 2024 17:41:37 +0600 Subject: [PATCH] Fix: Refactor to use lazy initialization for binding (#3453) Refactor binding initialization to use lazy delegation Replaced direct initialization of binding with lazy initialization to improve performance and resource management. This change defers the creation of the binding object until it is actually needed, which can reduce memory usage and improve efficiency. - Updated binding initialization to use lazy - Ensured proper access and lifecycle handling This update ensures that the binding is initialized only when required, leading to a more efficient use of resources. --- .../src/main/kotlin/com/v2ray/ang/ui/AboutActivity.kt | 6 ++---- .../src/main/kotlin/com/v2ray/ang/ui/LogcatActivity.kt | 8 ++++---- .../app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt | 9 +++++---- .../main/kotlin/com/v2ray/ang/ui/PerAppProxyActivity.kt | 8 ++++---- .../kotlin/com/v2ray/ang/ui/RoutingSettingsActivity.kt | 6 ++---- .../kotlin/com/v2ray/ang/ui/RoutingSettingsFragment.kt | 3 +-- .../com/v2ray/ang/ui/ServerCustomConfigActivity.kt | 6 ++---- .../src/main/kotlin/com/v2ray/ang/ui/SubEditActivity.kt | 6 ++---- .../main/kotlin/com/v2ray/ang/ui/SubSettingActivity.kt | 6 ++---- .../src/main/kotlin/com/v2ray/ang/ui/TaskerActivity.kt | 6 ++---- .../main/kotlin/com/v2ray/ang/ui/UrlSchemeActivity.kt | 6 ++---- .../main/kotlin/com/v2ray/ang/ui/UserAssetActivity.kt | 6 ++---- .../main/kotlin/com/v2ray/ang/ui/UserAssetUrlActivity.kt | 6 ++---- 13 files changed, 32 insertions(+), 50 deletions(-) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/AboutActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/AboutActivity.kt index f3bb37b3f..04a3c3bfd 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/AboutActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/AboutActivity.kt @@ -21,14 +21,12 @@ import java.text.SimpleDateFormat import java.util.Locale class AboutActivity : BaseActivity() { - private lateinit var binding: ActivityAboutBinding + private val binding by lazy {ActivityAboutBinding.inflate(layoutInflater)} private val extDir by lazy { File(Utils.backupPath(this)) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - binding = ActivityAboutBinding.inflate(layoutInflater) - val view = binding.root - setContentView(view) + setContentView(binding.root) title = getString(R.string.title_about) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/LogcatActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/LogcatActivity.kt index 06bc3e900..bd35637e0 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/LogcatActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/LogcatActivity.kt @@ -21,13 +21,13 @@ import java.io.IOException import java.util.LinkedHashSet class LogcatActivity : BaseActivity() { - private lateinit var binding: ActivityLogcatBinding + private val binding by lazy { + ActivityLogcatBinding.inflate(layoutInflater) + } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - binding = ActivityLogcatBinding.inflate(layoutInflater) - val view = binding.root - setContentView(view) + setContentView(binding.root) title = getString(R.string.title_logcat) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt index 8be75d45a..5779615d0 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt @@ -30,6 +30,7 @@ import com.tbruyelle.rxpermissions.RxPermissions import com.tencent.mmkv.MMKV import com.v2ray.ang.AppConfig import com.v2ray.ang.R +import com.v2ray.ang.databinding.ActivityLogcatBinding import com.v2ray.ang.databinding.ActivityMainBinding import com.v2ray.ang.databinding.LayoutProgressBinding import com.v2ray.ang.dto.EConfigType @@ -50,7 +51,9 @@ import rx.android.schedulers.AndroidSchedulers import java.util.concurrent.TimeUnit class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedListener { - private lateinit var binding: ActivityMainBinding + private val binding by lazy { + ActivityMainBinding.inflate(layoutInflater) + } private val adapter by lazy { MainRecyclerAdapter(this) } private val mainStorage by lazy { MMKV.mmkvWithID(MmkvManager.ID_MAIN, MMKV.MULTI_PROCESS_MODE) } @@ -82,9 +85,7 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - binding = ActivityMainBinding.inflate(layoutInflater) - val view = binding.root - setContentView(view) + setContentView(binding.root) title = getString(R.string.title_server) setSupportActionBar(binding.toolbar) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/PerAppProxyActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/PerAppProxyActivity.kt index 86949c334..1e2419bb0 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/PerAppProxyActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/PerAppProxyActivity.kt @@ -28,7 +28,9 @@ import rx.schedulers.Schedulers import java.text.Collator class PerAppProxyActivity : BaseActivity() { - private lateinit var binding: ActivityBypassListBinding + private val binding by lazy { + ActivityBypassListBinding.inflate(layoutInflater) + } private var adapter: PerAppProxyAdapter? = null private var appsAll: List? = null @@ -36,9 +38,7 @@ class PerAppProxyActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - binding = ActivityBypassListBinding.inflate(layoutInflater) - val view = binding.root - setContentView(view) + setContentView(binding.root) val dividerItemDecoration = DividerItemDecoration(this, LinearLayoutManager.VERTICAL) binding.recyclerView.addItemDecoration(dividerItemDecoration) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingsActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingsActivity.kt index 194c397eb..9eab7935c 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingsActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingsActivity.kt @@ -8,7 +8,7 @@ import com.v2ray.ang.AppConfig import com.v2ray.ang.databinding.ActivityRoutingSettingsBinding class RoutingSettingsActivity : BaseActivity() { - private lateinit var binding: ActivityRoutingSettingsBinding + private val binding by lazy { ActivityRoutingSettingsBinding.inflate(layoutInflater) } private val titles: Array by lazy { resources.getStringArray(R.array.routing_tag) @@ -16,9 +16,7 @@ class RoutingSettingsActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - binding = ActivityRoutingSettingsBinding.inflate(layoutInflater) - val view = binding.root - setContentView(view) + setContentView(binding.root) title = getString(R.string.title_pref_routing_custom) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingsFragment.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingsFragment.kt index fda272b49..657c8f0af 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingsFragment.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingsFragment.kt @@ -23,7 +23,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch class RoutingSettingsFragment : Fragment() { - private lateinit var binding: FragmentRoutingSettingsBinding + private val binding by lazy { FragmentRoutingSettingsBinding.inflate(layoutInflater) } companion object { private const val routing_arg = "routing_arg" } @@ -33,7 +33,6 @@ class RoutingSettingsFragment : Fragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { // Inflate the layout for this fragment - binding = FragmentRoutingSettingsBinding.inflate(layoutInflater) return binding.root// inflater.inflate(R.layout.fragment_routing_settings, container, false) } diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerCustomConfigActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerCustomConfigActivity.kt index 5fdb57f1f..1bd7275f3 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerCustomConfigActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/ServerCustomConfigActivity.kt @@ -21,7 +21,7 @@ import com.v2ray.ang.util.Utils import me.drakeet.support.toast.ToastCompat class ServerCustomConfigActivity : BaseActivity() { - private lateinit var binding: ActivityServerCustomConfigBinding + private val binding by lazy { ActivityServerCustomConfigBinding.inflate(layoutInflater) } private val mainStorage by lazy { MMKV.mmkvWithID(MmkvManager.ID_MAIN, MMKV.MULTI_PROCESS_MODE) } private val serverRawStorage by lazy { MMKV.mmkvWithID(MmkvManager.ID_SERVER_RAW, MMKV.MULTI_PROCESS_MODE) } @@ -34,9 +34,7 @@ class ServerCustomConfigActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - binding = ActivityServerCustomConfigBinding.inflate(layoutInflater) - val view = binding.root - setContentView(view) + setContentView(binding.root) title = getString(R.string.title_server) if (!Utils.getDarkModeStatus(this)) { diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubEditActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubEditActivity.kt index 210375575..8106aedb7 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubEditActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubEditActivity.kt @@ -23,7 +23,7 @@ import com.v2ray.ang.util.Utils import java.util.concurrent.TimeUnit class SubEditActivity : BaseActivity() { - private lateinit var binding: ActivitySubEditBinding + private val binding by lazy {ActivitySubEditBinding.inflate(layoutInflater)} var del_config: MenuItem? = null var save_config: MenuItem? = null @@ -33,9 +33,7 @@ class SubEditActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - binding = ActivitySubEditBinding.inflate(layoutInflater) - val view = binding.root - setContentView(view) + setContentView(binding.root) title = getString(R.string.title_sub_setting) val json = subStorage?.decodeString(editSubId) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubSettingActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubSettingActivity.kt index 09aca34f7..29d989006 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubSettingActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubSettingActivity.kt @@ -19,16 +19,14 @@ import kotlinx.coroutines.delay import kotlinx.coroutines.launch class SubSettingActivity : BaseActivity() { - private lateinit var binding: ActivitySubSettingBinding + private val binding by lazy { ActivitySubSettingBinding.inflate(layoutInflater) } var subscriptions: List> = listOf() private val adapter by lazy { SubSettingRecyclerAdapter(this) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - binding = ActivitySubSettingBinding.inflate(layoutInflater) - val view = binding.root - setContentView(view) + setContentView(binding.root) title = getString(R.string.title_sub_setting) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/TaskerActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/TaskerActivity.kt index 11f7a601b..872607d3e 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/TaskerActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/TaskerActivity.kt @@ -17,7 +17,7 @@ import com.v2ray.ang.databinding.ActivityTaskerBinding import com.v2ray.ang.util.MmkvManager class TaskerActivity : BaseActivity() { - private lateinit var binding: ActivityTaskerBinding + private val binding by lazy { ActivityTaskerBinding.inflate(layoutInflater) } private var listview: ListView? = null private var lstData: ArrayList = ArrayList() @@ -27,9 +27,7 @@ class TaskerActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - binding = ActivityTaskerBinding.inflate(layoutInflater) - val view = binding.root - setContentView(view) + setContentView(binding.root) //add def value lstData.add("Default") diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UrlSchemeActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UrlSchemeActivity.kt index 3668fa716..c7b71e598 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UrlSchemeActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UrlSchemeActivity.kt @@ -11,13 +11,11 @@ import com.v2ray.ang.util.AngConfigManager import java.net.URLDecoder class UrlSchemeActivity : BaseActivity() { - private lateinit var binding: ActivityLogcatBinding + private val binding by lazy { ActivityLogcatBinding.inflate(layoutInflater) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - binding = ActivityLogcatBinding.inflate(layoutInflater) - val view = binding.root - setContentView(view) + setContentView(binding.root) try { intent.apply { diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetActivity.kt index 3da7426f9..d353de40a 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetActivity.kt @@ -39,7 +39,7 @@ import java.text.DateFormat import java.util.* class UserAssetActivity : BaseActivity() { - private lateinit var binding: ActivitySubSettingBinding + private val binding by lazy { ActivitySubSettingBinding.inflate(layoutInflater) } private val settingsStorage by lazy { MMKV.mmkvWithID(MmkvManager.ID_SETTING, MMKV.MULTI_PROCESS_MODE) } private val assetStorage by lazy { MMKV.mmkvWithID(MmkvManager.ID_ASSET, MMKV.MULTI_PROCESS_MODE) } @@ -49,9 +49,7 @@ class UserAssetActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - binding = ActivitySubSettingBinding.inflate(layoutInflater) - val view = binding.root - setContentView(view) + setContentView(binding.root) title = getString(R.string.title_user_asset_setting) binding.recyclerView.setHasFixedSize(true) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetUrlActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetUrlActivity.kt index 48404d310..1d5d66f58 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetUrlActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetUrlActivity.kt @@ -16,7 +16,7 @@ import com.v2ray.ang.util.Utils import java.io.File class UserAssetUrlActivity : BaseActivity() { - private lateinit var binding: ActivityUserAssetUrlBinding + private val binding by lazy { ActivityUserAssetUrlBinding.inflate(layoutInflater) } var del_config: MenuItem? = null var save_config: MenuItem? = null @@ -27,9 +27,7 @@ class UserAssetUrlActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - binding = ActivityUserAssetUrlBinding.inflate(layoutInflater) - val view = binding.root - setContentView(view) + setContentView(binding.root) title = getString(R.string.title_user_asset_add_url) val json = assetStorage?.decodeString(editAssetId)