在我的应用程序中,我有一个登录过程,一旦你登录,应用程序就会调用服务器来获取特定的数据:
Call<JsonObject> peticion= RetrofitClient.getRetrofitClient(InicioSesionGibActivity.this).login(imei, idCliente, user, encriptedPass);
peticion.enqueue(new Callback<JsonObject>() {
@Override
public void onResponse(final Response<JsonObject> response, Retrofit retrofit) {
String respoString=response.body().toString();
if(response.isSuccess()){
settings.edit().putBoolean("logueado", true).apply();
Call<JsonPrimitive> peticion= RetrofitClient.getRetrofitClient(InicioSesionGibActivity.this).obtenerCodOrg(settings.getString("imei", ""), settings.getString("idCliente", ""));
peticion.enqueue(new Callback<JsonPrimitive>() {
@Override
public void onResponse(Response<JsonPrimitive> response2, Retrofit retrofit) {
if (response2.isSuccess()) {
codOrg = response2.body().getAsLong();
settings.edit().putLong("codorg", codOrg).apply();
dropTables();
obtenerEntidades();
}else{
//The execution gets here
Message msg=new Message();
msg.what=1;
loginHandler.sendMessage(msg);
AlertDialog.Builder aDialog=new AlertDialog.Builder(InicioSesionGibActivity.this);
aDialog.setTitle(getString(R.string.error));
aDialog.setMessage(getString(R.string.unknownerror));
aDialog.setPositiveButton(getString(R.string.si), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
aDialog.show();
}
}
@Override
public void onFailure(Throwable t) {
settings.edit().putBoolean("logueado", false).apply();
Message msg=new Message();
msg.what=1;
loginHandler.sendMessage(msg);
AlertDialog.Builder aDialog=new AlertDialog.Builder(InicioSesionGibActivity.this);
aDialog.setTitle(getString(R.string.error));
aDialog.setMessage(getString(R.string.neterror));
aDialog.setPositiveButton(getString(R.string.si), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
aDialog.show();
}
});
}else{
final AlertDialog.Builder builder=new AlertDialog.Builder(InicioSesionGibActivity.this);
builder.setTitle(getString(R.string.error));
builder.setMessage(getString(R.string.loginerror));
builder.setPositiveButton(getString(R.string.accept), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Message msg=new Message();
msg.what=1;
loginHandler.sendMessage(msg);
editTextUsuario.setText("");
editTextPassword.setText("");
}
});
builder.create().show();
}
}
@Override
public void onFailure(Throwable t) {
Message msg=new Message();
msg.what=1;
loginHandler.sendMessage(msg);
final AlertDialog.Builder builder=new AlertDialog.Builder(InicioSesionGibActivity.this);
builder.setTitle(getString(R.string.error));
builder.setMessage(getString(R.string.loginerror));
builder.setPositiveButton(getString(R.string.accept), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
});在我老板的一部三星S7手机(不是爆炸的那部)上,我的所有devices...except都运行正常。如果他从APK执行,就会发生这种情况。但是,这是奇怪的部分,如果我拿到手机,从Android Studio运行应用程序,执行起来很完美,我得到的数据也很好。
这让我抓狂,因为它很难调试。
有人遇到过这个问题吗?
如果您需要更多数据或澄清,请提问。
谢谢。
发布于 2016-10-14 08:47:50
可能是因为它的速度很快。当您将数据保存到共享首选项时,是否会立即将其读回?您正在使用apply(),它将把它存储在一个异步后台线程中,如果您尝试立即读回它,它可能不会立即出现。
您可能希望使用commit(),它将其数据立即写入当前线程中的持久存储中,并且在提交之前不会继续执行。
https://stackoverflow.com/questions/40019600
复制相似问题