我的Parse方法“inBackground()”不起作用,例如:
ParseUser.logInInBackground(emailAdd, passwordAd, new LogInCallback()
{
public void done(ParseUser user, ParseException e)
{
if (user != null)
{
finish();
Log.d("message","ok");
}
else
{
Log.d("message","fail");
}
}
});
但如果我这样做:
user = ParseUser.login(emailAdd,passwordAd);
<\ n>在Asynctask中,它有效。
我的问题是:最好在Asynctask或IntentService中执行此查询吗?如果用户按“主页”或“返回”按钮会发生什么?
谢谢
答案 0 :(得分:1)
AsyncTasks用于不占用太多时间的后台工作,通常UI正在等待来自后台的某些内容,因此您不想要保留它。例如,获取一个国家列表来绑定列表适配器或具有这种性质的东西。对于运行时间较长的进程,IntentService更常用。您可以为GPS服务运行IntentService,以便不断监听GPS更新。
AsyncTasks与上下文相关联,因此如果您按下或执行任何破坏您所处的上下文的操作,它将终止该任务并且不会重新启动它自己的任务。您需要自己做这件事,如果在糟糕的时间发生,您将丢失您尝试检索的数据。因此,正确管理生命周期非常重要。
我建议你看看RxJava。学习曲线肯定,但更清洁。
至于为什么inBackground不起作用,我需要了解网络是如何完成的,以及它如何与您的活动生命周期相关联。希望这有帮助!