2

ユーザーの場所と現在の天気に関する情報を取得するためのアプリケーションを開発しています。情報は次のように収集されます: StartGathering --> 緯度/経度を取得 --> 座標から位置データ (都市、住所など) を取得 --> 天気情報を取得 --> SQL データベースに情報を保存。すべては、データを含むさまざまなアクティビティ間で bundle を使用して文字列配列を送信することによって行われます。これを正確にするために、このプロセスは X 分ごとに繰り返されますが、私はアクティビティを扱ってきたため、更新プロセスはデバイス上の他のアプリケーションに干渉します。プロセスの各アクティビティに android:theme="@android:style/Theme.NoDisplay" を追加しました。これはバックグラウンドで実行するのと同じだと考えています。

一連のさまざまなアクティビティをサービスに簡単に変換し、アプリがバックグラウンドで必要な情報を収集できるようにして、ユーザーがパフォーマンスを損なうことなくデバイスを使用できるようにする方法はありますか? または、アクティビティが他のアプリケーションに干渉することなくバックグラウンドで何らかの作業を行うことは可能ですか?

4

2 に答える 2

3

一連のさまざまなアクティビティをサービスに簡単に変換する方法はありますか...

いいえ、Service(またはServices) を作成し、既存のコードをコピーして貼り付けます。Serviceアプリケーションのメイン スレッド (別名 UI スレッド) で実行されることに注意してください。実行する時間がかかる作業がある場合は、使用する必要があります。ワーカー スレッドを使用するかIntentService、バックグラウンド/ワーカー スレッドでデフォルトでどちらが機能するかを使用します。

または、アクティビティが他のアプリケーションに干渉することなくバックグラウンドで何らかの作業を行うことは可能ですか?

いいえ、あなたがやろうとしている方法ではありません。Activityは、Windows フォーム (または同様のもの) に類似していると考えてください。つまり、ユーザーがアプリを操作できるようにする UI のフレームワークです。でバックグラウンド作業を行う方法はありますが(たとえば、Activityを使用して)、は、いくつかの「数値演算」を実行している間、非表示にすることができるジェネリック クラスではありません。AsyncTaskActivity

于 2012-07-12T22:53:02.477 に答える
2

したがって、アプリがバックグラウンドで必要な情報を収集できるため、ユーザーはパフォーマンスを低下させることなくデバイスを使用できます。

プログラムが何かをしている場合は、「パフォーマンスの低下」を引き起こします。おそらく、(ユーザーにとって)重要ではないか、目立たないかもしれませんが、それでも低下します。あなたがやろうとしていること(場所を取得し、X分ごとに場所に関連する天気情報を取得するためのWebリクエストを作成する)は、使用している間隔時間に応じて、バッテリーのかなりの消耗を引き起こすと思われます。アプリがバッテリーを消耗していることについてユーザーに不満を言わせたくない場合は、インターバル時間をユーザーに任せることをお勧めします。

于 2012-07-13T00:05:16.750 に答える