首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android -如何在网络数据操作过程中处理来电

Android -如何在网络数据操作过程中处理来电
EN

Stack Overflow用户
提问于 2012-02-08 07:39:13
回答 1查看 1.6K关注 0票数 1

我的应用程序有一个功能,当菜单中的一个选项被选中时,它会向web服务发送一些数据。为此,我有一个活动,它在选择项目后执行AsyncTask。

以下是一些简化的示例代码,以降低演示目的的复杂性。在selection事件中调用sendDataToWebService()方法:

代码语言:javascript
复制
private void sendDataToWebService(MyData myData)
{
    MyAsyncTask task = new MyAsyncTask();
    task.execute(myData);
}


private class MyAsyncTask extends AsyncTask<MyData, Integer, String>
{
    @Override
    protected String doInBackground(MyData... myDataObjects)
    {
        // code here calls the data access layer, passing my data to it.
        // The data access layer basically does this (simplyfied for this example):
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httpPostRequest = new HttpPost(uri);
        response = httpclient.execute(httpPostRequest);
        //... clean up and return response back to doInBackground()...

        return someStringText;
    }

    @Override
    protected void onPostExecute(String value)
    {
        // Do something related to the value parameter
    }
}

我试图解释这样一种情况:用户开始将数据发送到web服务,但随后在传输过程中收到来电。当传入调用事件发生时,将调用活动的onPause方法,但因为我的传输是在AsyncTask中进行的,所以即使在onPause完成之后,AsyncTask线程也会继续。

所以我想知道处理这种情况的最好方法是什么?我要让它继续运行AsyncTask吗?我是否要监听来电事件并尝试取消AsyncTask?

用于传输的无线电(WiFi或蜂窝网络)对此有何影响?我相信一些运营商(例如Verizon)不允许在电话交谈期间通过手机网络传输数据。WiFi是不是受到了电话的影响?

将其迁移到服务组件中的线程是否会有所不同?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-08 11:01:13

像往常一样,这要视情况而定。数据有多重要?多大?如果传输中断,您可以重试吗?电话并不是特例。您的活动可能随时处于背景状态(用户按下主页按钮等),而且由于这是一个移动设备,您随时可能失去连接(火车进入隧道等)

您可以让它运行,如果数据大小较小,则可能会成功上载。如果它更大,服务会给你更好的完成上传的机会,但它也可能会被重复,所以你应该正确地处理它。您还可以侦听连接更改(使用广播侦听程序),并在网络可用时自动重试上载。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9185766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档