0

Android の概念の一部をまだ理解していない可能性がありますが、次の質問に答えると大いに役立つ場合があります。

私の Android アプリでは、バックグラウンドで x 秒ごとに Web サービスからデータを取得する必要があります (アプリケーションが実行されていないように見える必要があります)。

Web サービスからのデータが期待どおりのものである場合、Android 通知を表示する必要があります。

  • 具体的なアクティビティでアプリケーションをロードするにはどうすればよいですか?
  • クラッシュしてもバックグラウンドの「サービス」が実行され続けるようにするにはどうすればよいですか? これは、アプリケーションのバックグラウンド部分または「サービス」を再起動するにはどうすればよいですか?
4

4 に答える 4

2
May I use Android Services?

はい。IntentServiceを使用する

I need to get data from a web service each x seconds in background 

AlarmManagerを使用する

When the data from the web service is the one I am expecting,
I do need to show an Android Notification.

BroadcastReceiver通知を使用する

How can then load my Application in a concrete activity?

Intent を使用して通知からアクティビティを起動する

How can I ensure the background "service" will keep running even if it crashes?
This is, how do I restart that background part or "service" of my application?

クラッシュの原因を修正する必要があります。そうしないと、サービスが実行されるたびに、クラッシュが発生する可能性があります。AlarmManager は定期的にサービスを再起動します。

于 2013-09-13T08:21:49.107 に答える
2

私の Android アプリでは、バックグラウンドで x 秒ごとに Web サービスからデータを取得する必要があります (アプリケーションが実行されていないように見える必要があります)。

Android サービスを使用できますか? http://developer.android.com/reference/android/app/Service.html

はい、サービスを使用できますが、問題は x 秒ごとに Web サービスをポーリングしますか? そのようにバッテリーを非常に速く消耗させます。あなたができることは、不正確な繰り返しタスクをスケジュールすることです(約15分間隔で呼び出されますが、バッテリーの使用量を減らすために他のアプリと一緒にまとめられます). AlarmManager.setInexactRepeating() を参照してください。または、Google Cloud Messaging (GCM) を使用したプッシュ通知を使用して、新しいデータがあるときにサーバーに通知して電話を起動させます。

Web サービスからのデータが期待どおりのものである場合、Android 通知を表示する必要があります。具体的なアクティビティでアプリケーションをロードするにはどうすればよいですか?

サービスから両方を行うことができます。サービスはコンテキストであるため、通知を表示したり、アクティビティを開始したりできます...

クラッシュしてもバックグラウンドの「サービス」が実行され続けるようにするにはどうすればよいですか? これは、アプリケーションのバックグラウンド部分または「サービス」を再起動するにはどうすればよいですか?

AlarmManager で繰り返しサービス開始インテントをスケジュールできます。Service が実行中の場合は無視し、そうでない場合は Service を開始します。

Service がシステムによって簡単に強制終了されないようにするには (メモリが不足している場合など)、Service.startForeground() を使用し、Service.onStartCommand() から START_STICKY を返すようにしてください。

于 2013-09-13T08:23:26.010 に答える
1

*強調されたテキスト*以下の回答を見つけてください。

Web サービスからのデータが期待どおりのものである場合、Android 通知を表示する必要があります。

サービスがWebサービスから目的のデータを見つけると、通知が表示されます

  • 具体的なアクティビティでアプリケーションをロードするにはどうすればよいですか?

    ユーザーが通知をクリックしてアクティビティを開始する

  • クラッシュしてもバックグラウンドの「サービス」が実行され続けるようにするにはどうすればよいですか? これは、アプリケーションのバックグラウンド部分または「サービス」を再起動するにはどうすればよいですか?

定期的なアラームを設定してサービスを開始および停止します。これにより、バッテリーを消耗しません。

于 2013-09-13T08:18:52.903 に答える
1
  • はい、そうです..サービスを使用してください。データを取得すると、サービスがアプリのアクティビティを開始します。

  • サービスのクラッシュに関する問題について..データ取得サービスが実行されているかどうかをチェックする別のグローバル サービスを作成します。サービスが停止したことを発見した瞬間。監視サービスを作成して、データ取得サービスを再度再開します。

于 2013-09-13T08:23:06.407 に答える