使用单个意图检索多个记录与每个记录的单独意图

时间:2013-03-26 20:21:52

标签: android android-intent performance-testing

我正在尝试评估使用单个意图进行长时间处理的好处和成本,而不是使用多达五个单独的意图。

我的应用程序的用户从网上下载记录到数据库中的记录。用户可以在任何给定时间下载1到5个人的记录。

我的应用程序设置如下:

    private OnClickListener mySubmitOnClick = new OnClickListener() {

    @Override
    public void onClick(View v) {

       ArrayList<String> idsOfRecordsArray = getIdsOfRecordsToDownload();

               Intent intentToRetrieve = new Intent(getActivity(),
                                                  RetrieveData.class);
        Messenger messenger = new Messenger(handler);
        intentToRetrieve.putExtra("MESSENGER", messenger);

        intentToRetrieve.putStringArrayListExtra ("IdList",
                                                     idsOfRecordsArray);

        v.getContext().startService(intentToRetrieve);

        showDialog("Some Message");

        }
      }

这有效,但由于解析数据所需的时间,我有时会遇到超时错误。

我把它更改为:

    private OnClickListener mySubmitOnClick = new OnClickListener() {

    @Override
    public void onClick(View v) {

       ArrayList<String> idsOfRecordsArray = getIdsOfRecordsToDownload();
               while(iCount < idsOfRecordsArray.size()) {
        ArrayList<String> currentID = new ArrayList<String>();

        currentAthleteID.add(athleteIdArray.get(iCountAthletes));
        Intent intentToRetrieve = new Intent(getActivity(),
                                              RetrieveData.class);
        Messenger messenger = new Messenger(handler);
        intentToRetrieve.putExtra("MESSENGER", messenger);

        intentToRetrieve.putStringArrayListExtra ("IdList",
                                                              currentID);

        v.getContext().startService(intentToRetrieve);

        showDialog("Some Message");

        iCount++;
        }
        }

所以我现在可以同时发射多达五(5)个意图。这看起来很稳定,足够了。但是,处理进度对话框有点令人讨厌。如果我只打开1个对话框,它会在进程完成之前关闭。

有什么想法,这是更好的方法吗?或许我应该放弃其他方法?

1 个答案:

答案 0 :(得分:0)

使用IntentService在后台完成工作。您可以根据需要启动任意数量的意图,但IntentService一次只能处理一个意图。同时,您不会得到超时,用户可以继续工作。我认为用户会接受结果不会立即到达,只要他们在等待时可以做其他事情。

请参阅Android培训课程Running in a Background Service作为示例。