我有一个通过set方法更新全局变量的问题。总之,情况如下:与齐射同步请求android
使用一个类(SessionHandler是这个类的名称)来存储有关当前用户会话(登录)信息,然后在其中一套方法,它设置了我如果用户登录,则为布尔值为true,否则为false。该变量被初始化为FALSE。
使用库实现登录逻辑与Facebook,谷歌加,个性化登录。在这个类中有一个方法(customSignin),它根据登录是否成功返回一个布尔值。
@Override public boolean customSignin(SmartUser smartUser) { params = new ArrayList<>(); params.add(smartUser.getUsername()); params.add(smartUser.getPassword()); StringRequest strReq = new LoginStringRequest().getStringRequest(params); AppController.getInstance().addToRequestQueue(strReq); if(SessionHandler.logged){ return true; } else { return false; } }
然后TRUE =登录的用户,FALSE =用户没有登录。显然,如果用户在数据库中存在,该值必须被设置为真。 问题是,您可以从发布的代码中看到: 在此方法中,我打电话给另一个类,负责检查输入的值(用户名,密码)是否正确,检查数据库,要做到这一点使用库Volley,问题是作为一个异步任务,在Volley onResponse方法内,如果数据是正确的,通过set方法将septum设置为TRUE,则布尔变量LOGGED的值为true。 我稍后需要在第一个(customSignin)的方法中验证布尔变量的值,该值始终设置为FALSE,即使登录信息是正确的。 (然后继续从教育IF开始检查布尔值)。 这是凌空类的代码:
现在想知道如果任何人都可以告诉我,我怎么能解决这个问题,你能避免使用同步任务来解决问题?特别是,它通过排球给我,如果用户存在于数据库中,则设置为true,然后继续在customSignin方法中运行。
对不起,不幸的是使用翻译,感谢那些谁会知道如何帮助我。
我有同样的想法使用同步请求返回值。但是我用了FutureRequest,结果是TimeoutException。 – Applefriend
这是实现同步请求的方法[链接](http://s13.postimg.org/4n6573xw7/Schermata_2016_09_22_alle_21_24_00.png) – Applefriend