0

大量のテキスト メッセージを SMS 受信トレイにインポートすることを目的としたテスト アプリケーションを作成しています。「アドレス」と「本文」の 2 つの列に数千のメッセージがあります。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

1.UI workオンUI threadNon-UI workオフを維持すること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 を使用するのは少し圧倒されるように思われたので、AsyncTaskAndroid に導入されました。Android は ... としても知られています。これは、UI と非 UI スレッドの同期にPainLess threading役立ちます。

于 2012-09-14T16:43:09.280 に答える
0

このような長い操作は、AsyncTaskを使用して行う必要があります。これにより、UI スレッドをブロックしないようにし、処理中に進行状況ダイアログを簡単に表示して、ユーザーに通知できるようにします。

フォーマットに関しては、後で簡単にアップグレードして新しいニーズに合わせて変更できるデータベースを使用します。特にメッセージがフォーマットされている場合、これに文字列配列を使用するのはかなり複雑です。CSV 解析はネイティブでサポートされていないため、データベースでは選択しません。

于 2012-09-14T16:17:42.263 に答える