我正在转向Retrofit并尝试理解使用异步回调的正确架构.
例如,我有一个界面:
interface RESTService{
@GET("/api/getusername")
void getUserName(@Query("user_id") String userId,
Callback<Response> callback);
}
Run Code Online (Sandbox Code Playgroud)
我从主要活动中运行这个:
RestAdapter restAdapter = new RestAdapter.Builder()
.setServer("WEBSITE_URL")
.build();
RESTService api = restAdapter.create(RESTService.class);
api.getUserName(userId, new Callback<Response> {...});
Run Code Online (Sandbox Code Playgroud)
然后用户旋转设备,我有新创建的活动......这里发生了什么?如何获得对新活动的响应(我假设api调用后台将比第一个活动生命执行更长时间).也许我必须使用静态回调实例或者什么?请告诉我正确的方法......
我目前正在团队中开发一些Android应用程序,我们在过去几个月中使用了两种不同的方法(一种是我个人喜欢的,另一种是另一种开发者喜欢的).
虽然到目前为止结果是一样的,但这让我感到疑惑...我们应该:
Google建议使用哪种方法?
您的经验对此有何看法(优点,缺点,问题)?
所以我正在使用Android和AsyncTask类开发我的第一个多线程应用程序.我正在尝试使用它在第二个线程中触发Geocoder,然后使用onPostExecute更新UI,但我仍然遇到了正确的Context问题.
我在主线程上使用Contexts有点蠢蠢欲动,但我不确定Context是什么或如何在后台线程上使用它,我还没有找到任何好的例子.有帮助吗?以下是我要做的事情的摘录:
public class GeoCode extends AsyncTask<GeoThread, Void, GeoThread> {
@Override
protected GeoThread doInBackground(GeoThread... i) {
List<Address> addresses = null;
Geocoder geoCode = null;
geoCode = new Geocoder(null); //Expects at minimum Geocoder(Context context);
addresses = geoCode.getFromLocation(GoldenHour.lat, GoldenHour.lng, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
由于上下文不正确,它在第六行仍然失败.
我一直在研究一个应用程序,并且我已经设法AsyncTask让它在内部类中工作正常.
现在,我正在重构代码,以便AsyncTask它自己在一个单独的类中,但我想知道,ProgressDialog一旦任务成功完成,我如何杀死并启动一个新的Activity?我已尝试在onPostExecute(..)方法中启动一个新的Activity ,但我知道这不起作用.
将我的UI线程活动作为参数传递给AsyncTask的构造函数似乎不起作用:
//In UI Thread I had
public class Test101 extends Activity {
private Button btnLogin;
private LoginTask mLoginTask;
private Context context=this;
private Test101 mTest101;
mLoginTask=new LoginTask(context,mTest101);
mLoginTask.execute(null);
// In the AsyncTask I had
Activity mParentActivity;
public LoginTask(Context context,Activity act){
this.ctx=context;
this.mParentActivity=act;
}
onPostExecute(..){
mParentActivity.callSomeMethod();
}
...
}
Run Code Online (Sandbox Code Playgroud)
我不断得到一个NullPointerException,也许我错过了一些东西,但这对我不起作用.