2016-04-17 16 views
1

私が開発しているAndroidアプリは、Bluetoothを使って近くのビーコン(デバイス)から読み取ります。アプリがフォアグラウンドにある場合(20分間テスト済み)、正常に動作します。しかし、アプリがバックグラウンドになってから数分後には、読み込みが停止します。アンドロイド:バックグラウンドで実行中にアプリが停止しないようにする方法

アプリがバックグラウンドになると、onpause()メソッドが実行されます。それでも私のアプリは数分読み込み、何も読まなくなる(手動でフォアグラウンドに戻すと、oncreateメソッドが実行され、アプリが正常に続きます)。

私のアプリはバックグラウンドになってから数分後に読書が止まるのはなぜですか?私のアプリはサービスではなくアクティビティです。

  1. 私はintentserviceまたは
  2. を作成する必要があり、私はforegroundserive

を作成する必要があり、私はサービスの3種類以上と、それらのいずれかの場合の違いを理解scroll down toパソコンへ転送サービスや

  • する活性を変換する必要があります私を助けるだろう。

    は少し古いスレッドが、私はPrevent that the app get stopped or paused by the OSHow can we prevent a Service from being killed by OS?

    my app killed by android system when it running in backgroundを見直ししかし、私は失われています。私は@davidgyoung答えから理解では、任意の議論が

    EDIT

    高く評価され、私はサービスを記述する必要があります。私は、私のアプリのGUI部分がメインアクティビティになると考えています。その後、私は私のmainactivity/GUIがまだメモリ内でアクティブであり、サービス、アクティビティを実行するように設計されていませんGUI

    /EDIT

  • 答えて

    2

    を通知/放送しようとする時間によってアンドロイドによって殺されていなかったことを確認する方法バックグラウンドで長期間。 Android OSは、他の機能のためにメモリが必要なため表示されないアクティビティを破壊します。 サービスは適切な代替手段ですが、サービスによってもメモリ負荷の下でOSによって破壊されるため、OSによって殺され、ビーコンのスキャンを続けたい場合は、サービスを再起動する必要があります。我々はAndroid Beacon Libraryを建てたときに

    これらの問題のすべてが思い付いた、と私たちは行くのスキャンを保つためにこれらのソリューションに落ち着い:

    • は、バックグラウンドでのビーコンをスキャンするためにサービスを使用します。 IntentServiceである必要はありませんが、これは合理的なオプションです。

    • AlarmManagerを使用して、スキャンサービスを再開してください。スキャンサービスは、今後5分後に再開されます。 (この遅延により、OSは余分なメモリを一時的に必要とすることから回復するのに時間を割くことができます)。スキャンサービスがまだ実行されている場合は、アラームを再スケジュールするだけです。

    • ユーザがタスクスイッチャーでアプリケーションを強制終了した場合に、後でスキャンサービスを再起動するためのOSレベルのイベント(ブート、電源接続/切断)を登録します。

    このすべてあなたがAndroidのビーコンライブラリを使用することにした場合、あなたのために構築されている(と私たちはあまりにも、貢献を歓迎します!)あなたがあなた自身をロールバックしたい場合は、どのようにこれらの事を見てlook at the source codeにしたいこと建てた。自由にコピーして変更することもできます。それはオープンソースの美しさです!

    完全公開:私はAndroid Beacon Libraryのオープンソースプロジェクトの主任開発者です。

    +0

    私のビーコンがABLと互換性があるかどうかはどのように分かりますか?次のツールは自分のビーコンを検出しません。https://play.google.com/store/apps/details?id=com.radiusnetworks.locate – mobileDev

    +0

    Androidビーコンライブラリは、公開された形式のビーコンを検出できます。あなたのビーコンタイプを記述できるなら、私はヒントを伝えることができるかもしれません。 – davidgyoung

    +0

    うん。私はそれをABLと一緒に働かせました。ありがとうdavid – mobileDev

    関連する問題