从服务器获取数据并将其存储到数据库中而不干扰android中的UI的最佳方法是什么?

安卓DevM10

我正在使用Web服务从服务器获取城市,州和产品数据,并分别使用单独的线程将其存储在数据库中。

但是,当我尝试访问UI时,它显示警告提示应用程序未通过“等待”和“关闭”按钮进行响应。

              Thread thread = new Thread(new Runnable() {

                HttpClient Client = new DefaultHttpClient();
                  public void run() {
                    try {

                        String res = "";
                        HttpGet httpget = new HttpGet(URL);
                        ResponseHandler<String> responseHandler = new BasicResponseHandler();
                        res = Client.execute(httpget, responseHandler);
                        threadMsg(res);

                    } catch (Throwable t) {

                        Log.i("test", "Thread  exception " + t);
                    }
                }

                     void threadMsg(String msg) {

                    if (!msg.equals(null) && !msg.equals("")) {
                        Message msgObj = handler.obtainMessage();
                        Bundle b = new Bundle();
                        b.putString("message", msg);
                        msgObj.setData(b);
                        handler.sendMessage(msgObj);
                    }
                }


                Handler handler = new Handler() {

                    public void handleMessage(Message msg) {

                        String aResponse = msg.getData().getString("message");

                        if ((null != aResponse)) {

                         // stores data in database
                        }
                        else
                        {

                        // failed or empty response     
                        }    

                    }
                };

            });
      thread.start();

我使用单独的线程进行单独的Web服务调用。我也尝试过使用AsyncTask,但结果是相同的。

那么,实现此目标的最佳方法是什么?

纳扬

您应该为此目的使用服务。

您可以按照以下步骤操作:

  • 写一个扩展的类 IntentService
  • AndroidManifest文件中添加服务类
  • onHandleIntent服务类方法中,执行操作。在您的情况下,您需要从服务器获取数据并将其存储在数据库中。

  • 当您想要执行操作时,即在您体内Activity,创建一个Intent对象并将其传递给这样的startService方法

示例代码:示例服务类

public class HelloIntentService extends IntentService {

    public HelloIntentService() {
        super("HelloIntentService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {

        // if additional parameters are sent, receive them in the following way
        Bundle bundle  = intent.getExtras();
        String parameter1 = bundle.getString("param1");
        int parameter2 = bundle.getInt("param2");

        HttpClient Client = new DefaultHttpClient();
        String res = "";
        HttpGet httpget = new HttpGet(URL);
        ResponseHandler<String> responseHandler = new BasicResponseHandler();
        try {
            res = Client.execute(httpget, responseHandler);
        } catch (IOException e) {
            // handle exception
        }

        // store data in database
    }
}

在清单文件中

<manifest ... >
  ...
  <application ... >
      <service android:name=".HelloIntentService" />
      ...
  </application>
</manifest>

有关如何调用服务的样本活动代码

public class HelloActivity extends Activity {
    // call the service where you need
    private void myMethod(){
        Intent mServiceIntent = new Intent(this, HelloIntentService.class);
        // you can send additional parameters this way
        mServiceIntent.putExtra("param1", "Sample Parameter Value");
        mServiceIntent.putExtra("param2", 100);
        startService(mServiceIntent);
    }
}

在这里查看详细信息:

http://developer.android.com/guide/components/services.html https://developer.android.com/training/run-background-service/send-request.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将其存储在sql服务器数据库中的最佳xml格式

来自分类Dev

将其中包含对象的PHP数组存储到类似SQLite的数据库中的最佳方法是什么?

来自分类Dev

将图像上传到服务器的最佳方法是什么?保存在数据库还是服务器文件夹中?

来自分类Dev

将数据从android应用程序传输到服务器上的数据库的最佳方法是什么?

来自分类Dev

如何从cnc控制器获取数据并将其存储在数据库中?

来自分类Dev

如何从数据库获取日期并将其存储到php中的数组中?

来自分类Dev

将数组存储在数据库中并将其作为数组从数据库取回的最佳方法

来自分类Dev

从android应用程序获取数据并将其存储在使用php的sql数据库中

来自分类Dev

进行注册身份验证并将其存储在数据库中的正确方法是什么?

来自分类Dev

将图像上传到服务器并将图像路径存储在mysql数据库中

来自分类Dev

如何将数据从服务器存储到Phonegap中的数据库

来自分类Dev

Fileupload到服务器并将其ID作为guid保存到数据库

来自分类Dev

有什么方法可以从SQL获取数据库并将其显示在网页中?

来自分类Dev

在关系数据库中存储数组的最佳方法是什么?

来自分类Dev

在MySQL数据库中存储特殊字符的最佳方法是什么?

来自分类Dev

在PostGres数据库中存储复选框的最佳方法是什么

来自分类Dev

在数据库表中存储宾果卡号码的最佳方法是什么

来自分类Dev

Codeigniter:如何从数组中获取数据并将其存储在数据库中

来自分类Dev

从数据库中获取数据并将其存储在字符串中

来自分类Dev

与android中的服务器通信的最佳方法是什么

来自分类Dev

在MYSQL数据库中重新启动服务时保留时间的最佳方法是什么

来自分类Dev

如何通过json Web服务接受参数(包括图像)并将其存储到SQL Server数据库中?

来自分类Dev

如何使用Laravel检索JSON数据并将其存储到数据库中

来自分类Dev

从数据库获取数据的最佳方法是什么?

来自分类Dev

从数据库中获取嵌套JSON的最佳方法是什么?

来自分类Dev

存储应用程序数据并将其加载到应用程序中的最佳方法是什么?

来自分类Dev

使用JAVASCRIPT / PHP获取Mac和本地PC的IP地址并将其存储到数据库中?

来自分类Dev

是否可以从HTML5的本地存储中提取数据并将其保存到服务器数据库?

来自分类Dev

使用改造从服务器获取数据后如何在会议室数据库中存储数据

Related 相关文章

  1. 1

    将其存储在sql服务器数据库中的最佳xml格式

  2. 2

    将其中包含对象的PHP数组存储到类似SQLite的数据库中的最佳方法是什么?

  3. 3

    将图像上传到服务器的最佳方法是什么?保存在数据库还是服务器文件夹中?

  4. 4

    将数据从android应用程序传输到服务器上的数据库的最佳方法是什么?

  5. 5

    如何从cnc控制器获取数据并将其存储在数据库中?

  6. 6

    如何从数据库获取日期并将其存储到php中的数组中?

  7. 7

    将数组存储在数据库中并将其作为数组从数据库取回的最佳方法

  8. 8

    从android应用程序获取数据并将其存储在使用php的sql数据库中

  9. 9

    进行注册身份验证并将其存储在数据库中的正确方法是什么?

  10. 10

    将图像上传到服务器并将图像路径存储在mysql数据库中

  11. 11

    如何将数据从服务器存储到Phonegap中的数据库

  12. 12

    Fileupload到服务器并将其ID作为guid保存到数据库

  13. 13

    有什么方法可以从SQL获取数据库并将其显示在网页中?

  14. 14

    在关系数据库中存储数组的最佳方法是什么?

  15. 15

    在MySQL数据库中存储特殊字符的最佳方法是什么?

  16. 16

    在PostGres数据库中存储复选框的最佳方法是什么

  17. 17

    在数据库表中存储宾果卡号码的最佳方法是什么

  18. 18

    Codeigniter:如何从数组中获取数据并将其存储在数据库中

  19. 19

    从数据库中获取数据并将其存储在字符串中

  20. 20

    与android中的服务器通信的最佳方法是什么

  21. 21

    在MYSQL数据库中重新启动服务时保留时间的最佳方法是什么

  22. 22

    如何通过json Web服务接受参数(包括图像)并将其存储到SQL Server数据库中?

  23. 23

    如何使用Laravel检索JSON数据并将其存储到数据库中

  24. 24

    从数据库获取数据的最佳方法是什么?

  25. 25

    从数据库中获取嵌套JSON的最佳方法是什么?

  26. 26

    存储应用程序数据并将其加载到应用程序中的最佳方法是什么?

  27. 27

    使用JAVASCRIPT / PHP获取Mac和本地PC的IP地址并将其存储到数据库中?

  28. 28

    是否可以从HTML5的本地存储中提取数据并将其保存到服务器数据库?

  29. 29

    使用改造从服务器获取数据后如何在会议室数据库中存储数据

热门标签

归档