2016-08-15 6 views
0

私は実行時に何かをチェックするrunnableでアンドロイドアプリケーションを作った。数時間後にAndroidアプリケーションが終了する

しかし、問題は、エラーメッセージや何もせずに数時間後に[DEAD]になります。 誰でも問題が何であるか考えている人はいませんか?

+0

のAppスタンバイを固執する必要がありますか? –

+0

任意の増加値は?オーバーフローを考える? –

+0

https://developer.android.com/training/monitoring-device-state/doze-standby.html – Opiatefuchs

答えて

2

これは問題ではなく、実際には予想される動作です。

すべてのアプリのライフサイクルはAndroid OSによって管理されています。リソースを解放してシステムを応答可能にするためにアプリを終了するかどうかを決定します。現在使用されているアプリケーションは、一時停止されたものと背景のものよりも優先されます。私はあなたのケースでは、OSはそれがもう必要ではないと思うので、アプリケーションをシャットダウンすることを決定したと思います。

これを回避する方法はありますが、すべてはあなたのアプリが実際に何をするかによって異なります。あなたの実装の詳細はわかりませんが、あなたが望むものを達成するためには、粘着性のあるServiceまたはJobSchedulerを調べることをお勧めします。 Androidのボックスの外に出てくる永久に実行されるバックグラウンドタスク(存在するはずはありません)はありません。通常、実装には一定の制限があります。

+0

Wi-Fi SSID名が紛らわしいかどうかを確認するアプリケーションにしたいと思います。これが真であれば、ユーザーにnotifactionを送信します。私はこれをするために何を使うべきですか? – Unskilled

+0

私はあなたが 'JobScheduler'を使う必要があると思います。ジョブが実行されるタイミングは、いくつかの基準に基づいて定義できます。たとえば、現在Wi-Fiなどにいる場合にのみジョブを実行できます。ドキュメントをチェックしてください。 –

1

Android OS自体がアプリを終了している可能性があります。 OSがより多くのメモリを必要とする場合、長い間使用されていない他のプロセスを殺す(つまり、やりとりする)ようになります。あなたはチェックがどのように起こったかについては述べていませんが、アプリ内で直接行うべきではありませんが、バックグラウンドサービスがこれを妨げている可能性があるようなものです。

0

バックグラウンドプロセスでRunnablesを使用しないでください。アプリケーションが画面外に出ると直ちにOSによって中断/中止されるためです。

あなたには、いくつかのプロセスが定期的に実行できるようにしたい場合は、多分AlarmManager/BroadcastReceiverと組み合わせ

関連する問題