forked from androidannotations/androidannotations
-
Notifications
You must be signed in to change notification settings - Fork 0
Fork join
pyricau edited this page Jan 13, 2012
·
8 revisions
Since AndroidAnnotations 1.0
Let's say you want to split a background operation into two separate operations that run concurrently, and then do something on the UI thread when both are done.
Here is a simple way to implement this, thanks to @Background and @UiThread.
@EActivity
public class MyActivity extends Activity {
// Instances should only be accessed from the UI Thread to guarantee thread safety
static class ResultHolder {
ResultA resultA;
ResultB resultB;
}
// Multiple clicks will start multiple distinguished computations
@Click(R.id.myButton)
void startForkableComputation() {
ResultHolder resultHolder = new ResultHolder();
computeResultA(resultHolder);
computeResultA(resultHolder);
}
@Background
void computeResultA(ResultHolder resultHolder) {
ResultA resultA = new ResultA();
// Do some stuff with resultA
joinWork(resultHolder, resultA, null);
}
@Background
void computeResultB(ResultHolder resultHolder) {
ResultB resultB = new ResultB();
// Do some stuff with resultB
joinWork(resultHolder, null, resultB);
}
@UiThread
void joinWork(ResultHolder resultHolder, ResultA resultA, ResultB resultB) {
resultHolder.resultA = resultA;
resultHolder.resultB = resultB;
if (resultHolder.resultA == null || resultHolder.resultB == null) {
return;
}
// Show the results on the UI Thread
}
}14/06/2012 The 2.6 release is out
- Get started!
- Cookbook, full of recipes
- List of all available annotations
- Release Notes
- Examples
- Read the FAQ
- Join the Mailing list
- Create an issue
- Tag on Stack Overflow