哪里更好做查询? AsyncTask还是IntentService?

时间:2016-05-14 08:40:12

标签: android parse-platform service android-asynctask

我的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中执行此查询吗?如果用户按“主页”或“返回”按钮会发生什么?

谢谢

1 个答案:

答案 0 :(得分:1)

AsyncTasks用于不占用太多时间的后台工作,通常UI正在等待来自后台的某些内容,因此您不想要保留它。例如,获取一个国家列表来绑定列表适配器或具有这种性质的东西。对于运行时间较长的进程,IntentService更常用。您可以为GPS服务运行IntentService,以便不断监听GPS更新。

AsyncTasks与上下文相关联,因此如果您按下或执行任何破坏您所处的上下文的操作,它将终止该任务并且不会重新启动它自己的任务。您需要自己做这件事,如果在糟糕的时间发生,您将丢失您尝试检索的数据。因此,正确管理生命周期非常重要。

我建议你看看RxJava。学习曲线肯定,但更清洁。

至于为什么inBackground不起作用,我需要了解网络是如何完成的,以及它如何与您的活动生命周期相关联。希望这有帮助!