As wqrahd suggested use AsyncTask. I assume mainLoop is a main UI thread.
public class RepositionClass extends AsyncTask {
private Context mContext;
public RepositionClass(Context context) {
mContext = context;
}
@Override
protected void onPreExecute() {
// do UI related here, this function will run in main thread context.
}
@Override
protected Boolean doInBackground(String... params) {
// call non-ui(computation intensive) part of reposition function here.
return true;
}
@Override
protected void onPostExecute(Boolean result) {
// do UI related part of reposition function here.
}
}