这是一种完全按照您的意愿行事的方法,假设结果是一个 int。您可以使用 parcelable 对象扩展此属性。或许,使用 Service 仍然是最好的选择。
1) 创建一个名为 Result 的类,它是结果的包装器。它必须实现Parcelable 接口:
public class Result implements Parcelable {
private int result;
public Result(int i) {
super();
result = i;
}
public void setResult(int result) {
this.result = result;
}
public int getResult() {
return result;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(result);
}
public static final Parcelable.Creator<Result> CREATOR = new Parcelable.Creator<Result>() {
public Result createFromParcel(Parcel in) {
return new Result(in);
}
public Result[] newArray(int size) {
return new Result[size];
}
};
public Result(Parcel in) {
result = in.readInt();
}
}
2) 现在,您可以使用 Result 对象作为第一个活动的私有变量:
public class FirstActivity extends Activity {
private Result result;
....
}
3) 在您的 firstActivity 中,您可以使用如下代码启动 AsyncTask:
new MyAsyncTask(result).execute();
4) 你的 AsyncTask 可以这样制作:
class MyAsyncTask extends AsyncTask<Void, Void, Void> { // you can modify types as you want
Result result;
public MyAsyncTask(Result result) {
this.result = result;
}
....
public mySetResult() {
result.setResult(...); //set your value
}
....
}
5)当你启动第二个Activity时,你可以将你的结果对象传递给第二个Activity:
Intent i = new Intent(getApplicationContext(), SecondActivity.class);
i.putExtra("parc", result);
startActivity(i);
6) 最后,从第二个活动中,您可以使用以下代码获取结果:
Result res = (Result) getIntent().getParcelableExtra("parc");
关于parcelable对象的更多详细信息,可以查看Android Developer