gpt4 book ai didi

java - 不使用服务的后台任务 - Android

转载 作者:行者123 更新时间:2023-12-01 14:44:46 25 4
gpt4 key购买 nike

我正在开发一个应用程序,该应用程序有 5-6 个用户参与的 Activity 。在此过程中会生成一些数据并保存到数据库中。

我需要在服务器之间上传/同步这些数据(我使用 KSOAP2 )。但这应该发生在后面。即使用户在 Activity 之间跳转,也不会受到影响。但当我退出应用程序时,我不希望此过程继续。

Android 服务是执行此操作的唯一方法吗?最好的选择是什么?

最佳答案

您可以使用异步任务

http://developer.android.com/reference/android/os/AsyncTask.html 。请查看4 个步骤标题下的文档。

AsyncTask 被设计为围绕 Thread 和 Handler 的辅助类,并不构成通用的线程框架。 AsyncTasks 理想情况下应该用于短操作(最多几秒钟)。如果您需要保持线程长时间运行,强烈建议您使用 java.util.concurrent pacakge 提供的各种 API,例如Executor、ThreadPoolExecutor 和 FutureTask。

在 setContentView() 之后的 Activity 中

    pd= new ProgressDialog(this);
pd.setTitle("Making Soap Request");
new SoapRequestTask().execute();

private class SoapRequestTask extends AsyncTask<VOid, Void, Void> {

protected void onPreExecute()
{
pd.show();
}
protected SoapObject doInBackground(Void... params) {
// TODO Auto-generated method stub
//Soap request. do not update ui here
return null;
}

protected void onPostExecute(Void param)
{
//update ui here
pd.dismiss();

}

asynctask 的替代方案是 Robospicehttps://github.com/octo-online/robospice .

您可以在这里开始使用 robopice。 https://github.com/octo-online/robospice/wiki/Starter-Guide .

robospice 的样本位于https://play.google.com/store/apps/details?id=com.octo.android.robospice.motivations&feature=search_result .

robospice 的一些功能。

1. 异步执行(在后台 AndroidService 中)网络请求(例如:使用 Spring Android 的 REST 请求)。

2.是强类型的!您使用 POJO 发出请求,并获得 POJO 作为请求结果。

3.既不对用于请求的 POJO 也不对您在项目中使用的 Activity 类施加任何约束。

4.caches 结果(使用 Jackson 和 Gson 的 Json,或 Xml,或平面文本文件,或二进制文件,甚至使用 ORM Lite)。

5.当且仅当您的 Activity (或任何其他上下文)仍然存在时,通知您的 Activity (或任何其他上下文)网络请求的结果

6.根本没有内存泄漏,就像 Android Loaders 一样,与 Android AsyncTasks 不同的是,Android AsyncTasks 会在其 UI 线程上通知您的 Activity 。

7.使用简单但强大的异常处理模型。

关于java - 不使用服务的后台任务 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15550657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com