Это способ сделать именно то, что вы хотите, предполагая, что результатом является int.Вы можете расширить это свойство, используя объект parcelable.Возможно, использование Сервиса по-прежнему лучший выбор.
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) В вашем первом действии вы можете запустить 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)запустив второе задание, вы можете передать свой объект результата второму заданию:
Intent i = new Intent(getApplicationContext(), SecondActivity.class);
i.putExtra("parc", result);
startActivity(i);
6) Наконец, из второго задания вы можете получить результат, используя этот код:
Result res = (Result) getIntent().getParcelableExtra("parc");
Подробнее об объекте, подлежащем продаже, см. Android Developer