v1.3.4 - Swapped ExecutorService for kotlin coroutines to refresh the views

This commit is contained in:
Arty Bishop committed 2020-04-04 16:46:00 +01:00
1 parent e52e6ec4b5
commit 0188248bc1
6 files changed
+33 -26

No files matched your search

+2 -2
View File
@@ -30,8 +30,8 @@ android {
applicationId "com.rtbishop.look4sat"
minSdkVersion 21
targetSdkVersion 29
versionCode 10
versionName '1.3.3'
versionCode 11
versionName '1.3.4'
}
buildTypes {
release {
@@ -63,6 +63,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
setGroundStationPosition()
}
var isFirstLaunch = true
var tleMainList = dataManager.loadTleList()
var tleSelection = dataManager.loadSelectionList()
@@ -28,6 +28,7 @@ import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import com.github.amsacode.predict4java.GroundStationPosition
import com.github.amsacode.predict4java.Position
import com.github.amsacode.predict4java.SatPos
@@ -37,9 +38,9 @@ import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.databinding.FragmentMapViewBinding
import com.rtbishop.look4sat.predict4kotlin.PassPredictor
import com.rtbishop.look4sat.repo.SatPass
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import java.util.*
import java.util.concurrent.Executors
import java.util.concurrent.TimeUnit
import kotlin.math.abs
class MapViewFragment : Fragment(R.layout.fragment_map_view) {
@@ -56,7 +57,6 @@ class MapViewFragment : Fragment(R.layout.fragment_map_view) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val binding = FragmentMapViewBinding.bind(view)
val service = Executors.newSingleThreadScheduledExecutor()
mainActivity = activity as MainActivity
viewModel = ViewModelProvider(mainActivity).get(MainViewModel::class.java)
gsp = viewModel.getGSP().value ?: GroundStationPosition(0.0, 0.0, 0.0)
@@ -70,12 +70,7 @@ class MapViewFragment : Fragment(R.layout.fragment_map_view) {
predictor = satPassList.first().predictor
mapView = MapView(mainActivity, binding)
binding.frameMap.addView(mapView)
service.scheduleAtFixedRate(
{ mapView.invalidate() },
viewModel.getRefreshRate(),
viewModel.getRefreshRate(),
TimeUnit.MILLISECONDS
)
refreshView()
} else {
binding.fabMap.setOnClickListener {
Toast.makeText(
@@ -87,6 +82,15 @@ class MapViewFragment : Fragment(R.layout.fragment_map_view) {
}
}
private fun refreshView() {
lifecycleScope.launch {
while (true) {
mapView.invalidate()
delay(viewModel.getRefreshRate())
}
}
}
private fun showSelectSatDialog(list: List<SatPass>) {
val tleArray = arrayOfNulls<String>(list.size).apply {
list.withIndex().forEach {
@@ -50,9 +50,8 @@ class PassListFragment : Fragment(R.layout.fragment_pass_list) {
private lateinit var aosTimer: CountDownTimer
private lateinit var aosTimerText: TextView
private lateinit var mainActivity: MainActivity
private lateinit var satPassList: MutableList<SatPass>
private var satPassList: MutableList<SatPass> = mutableListOf()
private var isTimerSet: Boolean = false
private var isFirstLaunch: Boolean = true
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
@@ -60,14 +59,15 @@ class PassListFragment : Fragment(R.layout.fragment_pass_list) {
mainActivity = activity as MainActivity
viewModel = ViewModelProvider(mainActivity).get(MainViewModel::class.java)
satPassAdapter = SatPassAdapter(viewModel)
satPassList = mutableListOf()
aosTimerText = mainActivity.findViewById(R.id.toolbar_timer)
btnPassPrefs = mainActivity.findViewById(R.id.toolbar_filter)
setupComponents(fragmentBinding)
setupObservers(fragmentBinding)
if (viewModel.tleSelection.isNotEmpty() && isFirstLaunch) {
if (viewModel.tleSelection.isNotEmpty() && viewModel.isFirstLaunch) {
viewModel.getPasses()
isFirstLaunch = false
viewModel.isFirstLaunch = false
}
}
@@ -37,16 +37,14 @@ import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.databinding.FragmentPolarViewBinding
import com.rtbishop.look4sat.repo.SatPass
import com.rtbishop.look4sat.ui.adapters.TransmitterAdapter
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import java.util.*
import java.util.concurrent.Executors
import java.util.concurrent.TimeUnit
import kotlin.math.cos
import kotlin.math.sin
class PolarViewFragment : Fragment(R.layout.fragment_polar_view) {
private val service = Executors.newSingleThreadScheduledExecutor()
private val args: PolarViewFragmentArgs by navArgs()
private lateinit var viewModel: MainViewModel
@@ -67,14 +65,18 @@ class PolarViewFragment : Fragment(R.layout.fragment_polar_view) {
polarView = PolarView(mainActivity, refreshRate, binding)
binding.framePolar.addView(polarView)
service.scheduleAtFixedRate(
{ polarView.invalidate() },
refreshRate,
refreshRate,
TimeUnit.MILLISECONDS
)
setupTransRecycler(binding)
refreshView()
}
}
private fun refreshView() {
lifecycleScope.launch {
while (true) {
polarView.invalidate()
delay(viewModel.getRefreshRate())
}
}
}
+1 -1
View File
@@ -26,7 +26,7 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.1'
classpath 'com.android.tools.build:gradle:3.6.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.71"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.2.1"
}