0

我有以下类,它负责从收据表中获取非同步收据并将它们上传到服务器,以下函数现在只是遍历游标结果集:

public class MidnightUpload {


    public static void checkLocalAndUpload(final Context ctx) {

        Cursor cursor = DatabaseHandler
                .getInstance(ctx)
                .getReadableDatabase()
                .query(Receipt.TABLE_NAME, Receipt.FIELDS,
                        Receipt.WEB_RECEIPT_ID + " IS ?", new String[]{"dummy"},
                        null, null,
                        null, null);

        if (cursor != null && cursor.moveToFirst()) {

            do {
                Log.d("_id", cursor.getString(cursor.getColumnIndexOrThrow("_id")));
                Log.d("receipt_id", cursor.getString(cursor.getColumnIndexOrThrow("receipt_id")));
                Log.d("web_receipt_id", cursor.getString(cursor.getColumnIndexOrThrow("web_receipt_id")));
                Log.d("receipt_name", cursor.getString(cursor.getColumnIndexOrThrow("receipt_name")));
              //  Log.d("image", cursor.getString(cursor.getColumnIndexOrThrow("image")));
                Log.d("date_added", cursor.getString(cursor.getColumnIndexOrThrow("date_added")));
                Log.d("status", cursor.getString(cursor.getColumnIndexOrThrow("status")));
                Log.d("currency", cursor.getString(cursor.getColumnIndexOrThrow("currency")));
                Log.d("category", cursor.getString(cursor.getColumnIndexOrThrow("category")));
                Log.d("sub_category", cursor.getString(cursor.getColumnIndexOrThrow("sub_category")));
                Log.d("payment", cursor.getString(cursor.getColumnIndexOrThrow("payment")));
                Log.d("invoice", cursor.getString(cursor.getColumnIndexOrThrow("invoice")));
                Log.d("custom_field", cursor.getString(cursor.getColumnIndexOrThrow("custom_field")));
                Log.d("organization", cursor.getString(cursor.getColumnIndexOrThrow("organization")));
                Log.d("person", cursor.getString(cursor.getColumnIndexOrThrow("person")));

            } while (cursor.moveToNext());
        }


    }
}

我知道我可以使用以下方法启动多个异步任务:

 asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);

我计划从 IntentService 调用上述方法。所以这是我的困惑:

1) do while 循环会等到控制从 asyncTask 返回以进行下一次迭代吗?

2) 在 intentService 中使用和生成多个线程会破坏我的程序吗?

3)我是否Runnable r = new Runnable()比 AsyncTask 更好使用 - 因为我不打算进行任何 UI 操作?

4

0 回答 0