-1

私はアンドロイド開発が初めてで、特定の時間にSMSを送信するようにスケジュールするアプリを開発しています。送信時刻は SQLLITE DB に保存されています。時間が DB 時間に達した場合、SMS を送信する必要があります。SMS送信部分はできますが、時刻を確認できません。

私は Android AlarmManager を使用する必要があることを知っており、その使用方法を知っています。

私の問題は、DBから時間を取得し、デバイス時間でチェックを確認することです。(サービスの種類)

4

3 に答える 3

1

まず第一に、Alarm Manager は重すぎて使用できないことをお勧めします。タスクをトリガーするマルチスレッドを使用して同期クラスを作成することをお勧めします

postdelay オプションは、アラーム マネージャのトリックを行います。

その同期クラスをサービスクラスにするのはあなたの選択です。

Android用のこの同期クラスに関するいくつかの例に出くわしました.そのうちの1つは

Android: 定期的にコードを実行する

受け入れられた回答は、必要性を引き起こす syn クラスを作成する方法に役立ちます。

動的遅延のために、db 値を postdelay 関数に簡単に配置できるようになりました。

于 2013-10-28T07:43:01.583 に答える
1

はい、AlarmManager を使用する必要がありますが、データベースを調べて、送信保留中のメッセージの数と、送信する時間があるかどうかを確認するのは良い方法ではないと思います。

そのためのバックグラウンドサービスを作成する必要がありますが、それは良いアプローチだと思いますか?

  • このサービスは常にデータベースを検索し続けますか? (リソース消費が多すぎる)
  • 定期的にサービスを利用したい場合、どのくらいの期間を設定しますか? (送信の時間精度の妥協)

これに最も適した AlarmManager です。現在データベースにエントリを作成しているときに、アラームを初期化するだけです。アラームを RTC_WAKEUP にして、電話の電源が切れていてもメッセージを送信できるようにします。そして、すべてがアンドロイド自体によって処理されます。

はい、データベースを使用して、アプリケーションによって送信されたすべてのメッセージ、保留中から送信済み、正常に送信された、失敗したなどの記録を保持できます。つまり、メッセージとそのステータスをデータベースに入力し、更新して正常に送信するなど、それぞれのイベントで更新するだけですアラームがトリガーされたとき。

長い話ですが、これが役に立てば幸いです...

于 2013-10-28T07:45:25.007 に答える
0

GCM インテント サービスを使用します。アプリがアイドル状態またはバックグラウンドであっても、特定のコードを実行するために使用されます。そのクラスで、ハンドラーまたはタイマーを記述し、コードを記述します。このアプローチを試すか、調べることができます

于 2013-10-28T08:21:41.370 に答える