3

現在、特定のアプリケーションを設計しようとしていますが、その方法がよくわかりません。アプリはこのように実行する必要があります。

私がしなければならないこと :

ユーザーがアプリケーションを起動します。このアクションは、アプリケーションの UI が画面上にない場合でも、テスト シナリオを取得し、テストを実行し、結果を同じサーバーに送信するためにリモート サーバーに要求する必要がある UI (現在はサービス) から独立したものを開始します。

2 番目の制約 : ユーザーは、最初に、サーバーからのシナリオの 2 つの要求の間の時間を選択します。

例 :ユーザーがアプリを起動し、「5 分ごとにテスト シナリオの要求を 1 つ実行する」を選択すると、その後、自分の電話で好きなことを行うことができます。そして、アプリは 5 分ごとに、テスト シナリオ (1 つではなく、さまざまな数、たとえば 50) を取得する要求を送信し、テスト シナリオを実行して、結果をサーバーに送信します。そして、次のリクエストを待ちます。
この間、ステータスバーの通知アイコンは、アプリの UI にアクセスするのに適していると思います。これにより、ユーザーは、アプリが十分なテストを行ったと感じたら、UI にアクセスしてアプリを停止できます。

私がすでに行ったこと:

サービスを作成するアクティビティを作成します。また、 でアラームを設定し、 X 分/秒/... ごとにサービスを呼び出すAlarmManagerで受信しAlarmReceiver、シナリオを取得するためにサービスでサーバーへの要求を開始します (http 要求は AsyncTask で行われます)。onCreate()サービスは、そのメソッドのステータス バーに通知を配置します。また、JSON を解析し、HttpRequest を送信し、そのような技術的なことだけを行うこともできました。

私の問題は何ですか:

の最後でサービスが停止することがわかりましたonStartCommand()。メソッドを終了してからonDestroy()(私が入れていない場所stopSelf())に行きますが、サービスは本当に閉じていますか?はいの場合、アプリケーションの全期間中、どうすればそれを「アップ」できますか?

ステータスバーの通知は、 によって指定されたリズムで表示および非表示になりましたAlarmManager。どうすればそれを「安定させる」ことができますか?

そのようなアプリを既に設計している場合 (メール アプリは、X 分ごとに新しいメールをチェックして通知を送信するようにメール サーバーに要求する良い例だと思います)、どうすれば目標を達成できますか? メール アプリの例を再利用するには: サーバー上の新着メールをチェックするサービスは常に実行されていますか?

このアプリの王様を設計する方法が本当にわからないので、どんな助けも大歓迎です. 私の悪い英語でごめんなさい。精度、サービスのコード、アクティビティが必要な場合は、お問い合わせください。

よろしく

4

1 に答える 1

1

ServiceUIスレッドで実行されているようです。Serviceすべてのネットワーク操作が機能する内に新しいスレッドを作成する必要があります。したがって、必要はありませんAlarmManager-waitあなたの 内の X ミリ秒だけThreadです。

PS 新しいスレッドの作成方法がわからない場合:

new Thread(new Runnable(){
    public void run(){
        //your code here
    }
}).start();

ただし、最初にマルチスレッドについて読むことを強くお勧めします。

于 2012-06-15T10:17:56.853 に答える