Hallo,
ich versuche die Berechnung von Funktionswerten auf mehrere AsyncTasks aufzuteilen, diese liefern jeweils ein IntArray und eine Sequenznummer zurück (damit ich später weiß, wo im gesamten Array das Teilstück hinkommt), mein aktueller Versuch sieht so aus:
Java
private fun startAsyncFuncCalc(){
//[-drawViewWidth.div(2)-leftXBorder..drawViewWidth.div(2)-leftXBorder]
val a = -drawView.width.div(2) - drawView.getXStart()
val iWidth = drawView.width
val emptyArray = IntArray(iWidth, {_-> -1})
val onCalculationComplete = object : OnFunctionCalculationCompleted{
override fun onFunctionCalcCompleted(vars: IntArray, sequNumber : Int) {
Log.d("RETURNED", "Task with sequNumber $sequNumber returned.")
for(i in sequNumber..(sequNumber + iWidth / NUMBER_OF_TASKS))
emptyArray[i] = vars[i-sequNumber]
if(emptyArray.filter({x -> x != -1}).count() > 0)
drawView.updateFunction(vars)
}
}
for(i in 0..NUMBER_OF_TASKS-1) {
var funcStart = a + ((iWidth / NUMBER_OF_TASKS) * i)
var funcEnd = a + ((iWidth / NUMBER_OF_TASKS) * (i+1))
var arrayStart = ((drawView.width / NUMBER_OF_TASKS) * i)
val values = AsyncFunctionValues()
functionValuesTasks?.add(values)
values.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
drawView.width, drawView.getScaleFactor(), txtFunction.text.toString(), drawView.getXStart(),
onCalculationComplete,funcStart,funcEnd,arrayStart)
}
}
Alles anzeigen
Allerdings stürzt die App kommentarlos ab (nicht mal ein Fenster auf meinem Smartphone erscheint), meine Idee ist, dass ich allen AsyncTasks die selbe Referenz auf das Callback-Objekt übergebe, kann das vllt zu Problemen führen?