很抱歉这个问题,但我最近开始开发android和Java新手。
目前,我能够" Toast" onPostExecute导致" BackgroundWorkerLocation.java"。我需要的是以某种方式将这些结果传递给" MainActivty.java"从我执行这个类的地方。
MainActivity.java
String type = "get_location";
String tLatitude = String.valueOf(latitude);
String tLongitude = String.valueOf(longitude);
BackgroundWorkerLocation backgroundWorkerLocation = new BackgroundWorkerLocation(getApplicationContext());
backgroundWorkerLocation.execute(type, tLatitude, tLongitude);
// I need "Results" here
BackgroundWorkerLocation.java
public class BackgroundWorkerLocation extends AsyncTask<String,Void,String> {
Context context;
BackgroundWorkerLocation(Context ctx){
context = ctx;
}
@Override
protected String doInBackground(String... params) {
// Some background work
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
// Currently I am able to Toast "RESULT" here
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
}
答案 0 :(得分:2)
您需要创建一个可用作回调的界面:
interface MyCallback {
void onResult(String result);
}
在您的活动中,您将创建此回调的匿名实现。 将它传递给您的ASyncTask。
String type = "get_location";
String tLatitude = String.valueOf(latitude);
String tLongitude = String.valueOf(longitude);
BackgroundWorkerLocation backgroundWorkerLocation = new BackgroundWorkerLocation(getApplicationContext(), new MyCallback() {
@Override
public void onResult(String result) {
// I need "Results" here
}
});
backgroundWorkerLocation.execute(type, tLatitude, tLongitude);
当ASyncTask完成时,你调用&#34; onResult&#34;回调的方法。
public class BackgroundWorkerLocation extends AsyncTask<String,Void,String> {
Context context;
private final MyCallback myCallback;
BackgroundWorkerLocation(Context ctx, MyCallback myCallback){
context = ctx;
this.myCallback = myCallback;
}
@Override
protected String doInBackground(String... params) {
// Some background work
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
// Currently I am able to Toast "RESULT" here
myCallback.onResult(result);
}
}
这是您在两个类之间共享数据的方法。
请注意,由于回调实现是匿名的,因此它具有对您的Activity的引用,因此如果您的任务比您的活动长,则可能导致内存泄漏。 (你的下一个问题: - ))