0

私は Android サービスを初めて使用するので、現在のプロジェクトでそれらをどのように使用できるかを明確にするいくつかの質問がありました。

1) サービスを実行するには、アプリケーションを実行する必要がありますか? サービスを開始するには、アプリケーションを起動する必要がありますか?

2) サービス実行の最後に画面にテキストを出力したい。まず、アクティビティの画面に切り替えたときに、アクティビティ UI にこのテキストを表示できますか?

3) メインの Activity クラスに実装されている変数と関数をサービスで使用したい。出来ますか?

4) 質問 3 に関連: 現在のアプリケーションに、TimerTask を使用して毎分繰り返す AsyncTask があります。私は同じ機能を持ちたいのですが、今回はユーザーが何か他のことをしているときにバックグラウンドで実行しています。サービスはそれを行うのに正しいことですか? サービスから searchRegularly() (アクティビティにある) 関数を実行することでそれを達成できますか? 以下backgroundSearchは、毎分実行される AsyncTask の名前です。

    public void searchRegularly() {

    TimerTask doAsynchronousTask;
    final Handler handler = new Handler();
    searchTimer = new Timer();
    doAsynchronousTask = new TimerTask() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            handler.post(new Runnable() {
                public void run() { 

                      backgroundSearch = new SearchTask();
                      backgroundSearch.execute();
                }
            });

        }

    };

    searchTimer.schedule(doAsynchronousTask, 1000,60000);

}

5) Service と IntentService のどちらを使用するかをどのように決定しますか? 主な違いは何ですか?

4

1 に答える 1

2

1)いいえ。ただし、アプリケーション(アクティビティではなく、マニフェストのアプリケーションクラスを意味します)は、サービスの前に作成されます

2) 「乾杯」のことですか?はい

3) いくつかのトリックで可能ですが、これはお勧めしません。デザインを再考してください。

4) サービスでできること、またはAlaramManagerを検討することができます

5) サービス自体はシングルトンである必要があります。同じクラスの 2 つのサービスが同時に実行されることはありません。Service の場合、複数の StartService を呼び出す場合、および Service が既に実行されている場合は、2 回開始されることはありません。ただし、 IntentService は複数の「開始」で同時に機能します。

于 2012-06-12T00:56:55.940 に答える