kopia lustrzana https://github.com/ge0rg/aprsdroid
asynctask makes your code crawl
rodzic
befb2847ea
commit
fae714f854
|
|
@ -8,6 +8,11 @@
|
|||
-keepattributes *Annotation*
|
||||
-keep public class * extends android.app.Activity
|
||||
-keep public class * extends android.app.Service
|
||||
-keepclassmembers class * extends android.os.AsyncTask {
|
||||
protected void onPreExecute();
|
||||
public *** doInBackground(...);
|
||||
protected void onPostExecute(...);
|
||||
}
|
||||
-keep public class * extends android.view.View {
|
||||
public <init>(android.content.Context);
|
||||
public <init>(android.content.Context, android.util.AttributeSet);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import _root_.android.content._
|
|||
import _root_.android.database.Cursor
|
||||
import _root_.android.os.{Bundle, Handler}
|
||||
import _root_.android.util.Log
|
||||
import _root_.android.view.{Menu, MenuItem, View}
|
||||
import _root_.android.view.{Menu, MenuItem, View, Window}
|
||||
import _root_.android.widget.ListView
|
||||
|
||||
class HubActivity extends ListActivity {
|
||||
|
|
@ -17,7 +17,9 @@ class HubActivity extends ListActivity {
|
|||
|
||||
override def onCreate(savedInstanceState: Bundle) {
|
||||
super.onCreate(savedInstanceState)
|
||||
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS)
|
||||
setContentView(R.layout.hubactivity)
|
||||
setProgressBarIndeterminateVisibility(true)
|
||||
|
||||
getListView().setOnCreateContextMenuListener(this);
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,28 @@
|
|||
package org.aprsdroid.app;
|
||||
|
||||
import android.os.AsyncTask;
|
||||
|
||||
/**
|
||||
* Temporary workaround to solve a Scala compiler issue which shows up
|
||||
* at runtime with the error message
|
||||
* "java.lang.AbstractMethodError: abstract method not implemented"
|
||||
* for the missing method LookupTask.doInBackground(String... args).
|
||||
*
|
||||
* Our solution: the Java method doInBackground(String... args) forwards
|
||||
* the call to the Scala method doInBackground1(String[] args).
|
||||
*/
|
||||
public abstract class MyAsyncTask<Progress, Result> extends AsyncTask<String, Progress, Result> {
|
||||
|
||||
protected abstract Result doInBackground1(String[] args);
|
||||
|
||||
@Override
|
||||
protected Result doInBackground(String... args) {
|
||||
String[] args1 = new String[args.length];
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
args1[i] = args[i];
|
||||
}
|
||||
return doInBackground1(args1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -1,8 +1,9 @@
|
|||
package org.aprsdroid.app
|
||||
|
||||
import _root_.android.app.Activity
|
||||
import _root_.android.content._
|
||||
import _root_.android.database.Cursor
|
||||
import _root_.android.os.{Bundle, Handler}
|
||||
import _root_.android.os.{AsyncTask, Bundle, Handler}
|
||||
import _root_.android.text.format.DateUtils
|
||||
import _root_.android.util.Log
|
||||
import _root_.android.view.View
|
||||
|
|
@ -75,27 +76,10 @@ class PositionListAdapter(context : Context,
|
|||
super.bindView(view, context, cursor)
|
||||
}
|
||||
|
||||
def updateMyLocation(lat : Int, lon : Int) {
|
||||
import PositionListAdapter._
|
||||
my_lat = lat
|
||||
my_lon = lon
|
||||
val new_cursor = mode match {
|
||||
case SINGLE => storage.getStaPositions(targetcall, "1")
|
||||
case NEIGHBORS => storage.getNeighbors(mycall, my_lat, my_lon, System.currentTimeMillis - 30*60*1000, "20")
|
||||
case SSIDS => storage.getAllSsids(targetcall)
|
||||
}
|
||||
changeCursor(new_cursor)
|
||||
}
|
||||
|
||||
def reload() {
|
||||
val cursor = storage.getStaPositions(mycall, "1")
|
||||
if (cursor.getCount() > 0) {
|
||||
cursor.moveToFirst()
|
||||
my_lat = cursor.getInt(StorageDatabase.Position.COLUMN_LAT)
|
||||
my_lon = cursor.getInt(StorageDatabase.Position.COLUMN_LON)
|
||||
}
|
||||
cursor.close()
|
||||
updateMyLocation(my_lat, my_lon)
|
||||
val qh = new QueryHandler()
|
||||
// qh.execute(mycall, targetcall)
|
||||
qh.onPostExecute(qh.doInBackground1(Array(mycall, targetcall)))
|
||||
}
|
||||
|
||||
def onDestroy() {
|
||||
|
|
@ -103,4 +87,35 @@ class PositionListAdapter(context : Context,
|
|||
changeCursor(null)
|
||||
}
|
||||
|
||||
class QueryHandler extends MyAsyncTask[Unit, Cursor] {
|
||||
override def doInBackground1(calls : Array[String]) : Cursor = {
|
||||
import PositionListAdapter._
|
||||
Benchmark("doInBackground1") {
|
||||
val mycall = calls(0)
|
||||
val targetcall = calls(1)
|
||||
//var my_lat = 0
|
||||
//var my_lon = 0
|
||||
val cursor = storage.getStaPositions(mycall, "1")
|
||||
if (cursor.getCount() > 0) {
|
||||
cursor.moveToFirst()
|
||||
my_lat = cursor.getInt(StorageDatabase.Position.COLUMN_LAT)
|
||||
my_lon = cursor.getInt(StorageDatabase.Position.COLUMN_LON)
|
||||
}
|
||||
cursor.close()
|
||||
}
|
||||
mode match {
|
||||
case SINGLE => storage.getStaPositions(targetcall, "1")
|
||||
case NEIGHBORS => storage.getNeighbors(mycall, my_lat, my_lon,
|
||||
System.currentTimeMillis - 30*60*1000, "20")
|
||||
case SSIDS => storage.getAllSsids(targetcall)
|
||||
}
|
||||
}
|
||||
|
||||
override def onPostExecute(c : Cursor) {
|
||||
Benchmark("changeCursor") {
|
||||
changeCursor(c)
|
||||
}
|
||||
context.asInstanceOf[Activity].setProgressBarIndeterminateVisibility(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import _root_.android.database.Cursor
|
|||
import _root_.android.net.Uri
|
||||
import _root_.android.os.{Bundle, Handler}
|
||||
import _root_.android.util.Log
|
||||
import _root_.android.view.{Menu, MenuItem, View}
|
||||
import _root_.android.view.{Menu, MenuItem, View, Window}
|
||||
import _root_.android.view.View.OnClickListener
|
||||
import _root_.android.widget.{ListView,SimpleCursorAdapter}
|
||||
|
||||
|
|
@ -26,7 +26,9 @@ class StationActivity extends ListActivity with OnClickListener {
|
|||
|
||||
override def onCreate(savedInstanceState: Bundle) {
|
||||
super.onCreate(savedInstanceState)
|
||||
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS)
|
||||
setContentView(R.layout.stationactivity)
|
||||
setProgressBarIndeterminateVisibility(true)
|
||||
|
||||
getListView().setOnCreateContextMenuListener(this);
|
||||
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue