即使用户退出活动,如何确保执行HTTP请求

时间:2015-04-17 15:27:28

标签: android http android-activity android-asynctask

我正在开发一个应用程序,我需要执行多个HTML请求。我需要确保执行某些POST请求(例如,用户输入需要存储在服务器中的数据)。通常,我会在用户与之交互的同一个Activity中使用AsyncTask,但是在用户进行输入后,此活动立即关闭,POST请求可能尚未完成(由于连接速度缓慢或其他原因)。在这种情况下,活动将被销毁(据我所知)AsyncTask无法完成其工作。

将数据发送到服务器的正确方法与活动的生命周期无关?

1 个答案:

答案 0 :(得分:1)

您可以在IntentService中运行作业,服务将在完成后自行销毁。

关于此事的

Here is a relevant tutorial(相关代码复制如下)。

将运行您的后台代码的IntentService。

public class MyIntentService extends IntentService {

    public MyIntentService(String name) {
        // Used to name the worker thread
        // Important only for debugging
        super(MyIntentService.class.getName());
        setIntentRedelivery(true);
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        // Invoked on the worker thread
        // Do some work in background without affecting the UI thread
    }
}

在清单中注册您的IntentService。

<service
    android:name="com.example.app.MyIntentService">
</service>

无论何时需要运行它,都要调用IntentService。

Intent intent = new Intent(this, MyIntentService.class);
// Put some data for use by the IntentService
intent.putExtra("foo", "bar");
startService(intent);