0

我正在创建一个测试应用程序,其目的是将大量文本消息导入短信收件箱。我在“地址”和“正文”两列中有几千条消息。我可以将它们保存为 csv、sqlite 或字符串数​​组格式。我不确定如何解决这个问题,以使这个 while 循环有效,以及我可能希望以何种方式解析数据。

请指导完成此任务的最佳方法。

为简单起见,我在这里尝试将其作为数组,但存在一些语法错误。使用数组将值添加到数据库中的正确方法是什么?

这是我到目前为止所拥有的:

        private void importSms(final String[] addressvariable, final String[] bodyvariable) {
    Thread queue = new Thread(new Runnable() {
        public void run() {
             while(true) { //will have to define this boolean
                 ContentValues values = new ContentValues{);
                 values.put("address", [addressvariable]);
                 values.put("body", [bodyvariable]);
                 getContentResolver().insert(Uri.parse("content://sms/inbox"), values);
             }
         }
       }); 
       queue.start();
4

2 回答 2

0

像这样的长操作应该使用AsyncTask来完成。这将确保您不会阻塞 UI 线程,并允许您在处理时轻松显示进度对话框,让用户了解情况。

至于格式,我会使用数据库,因为它可以在以后轻松升级并修改以满足新的需求。为此使用字符串数组会相当复杂,特别是如果您的消息已格式化。原生不支持 CSV 解析,所以我不会在数据库中选择它。

于 2012-09-14T16:17:42.263 回答
0

1.保持UI workonUI threadNon-UI workon Non-UI thread,被认为是一种很好的编程方法,但是随着AndroidHoneyComb版本的到来,它变成了rule......

2. Android 应用程序始终启动DUI(专用 UI​​ 线程)。

3.您可以使用Thread,这将在 上进行长时间的处理separate Non-UI thread(创建任何其他线程,立即将您从 UI 线程中删除)。

4.现在我们可以使用Handler在.Non-UI threadUI thread

5.现在由于使用Thread,然后Handler似乎有点压倒性,所以AsyncTask被引入Android,也被称为PainLess threading......这有助于UI和Non-UI线程的同步。

于 2012-09-14T16:43:09.280 回答