OSをフリーズさせるAndroidアプリを開発しています。アプリがAndroid OSをフリーズする方法
私の質問はかなりシンプルですが、長時間の検索の後に私は答えに近づいていません。
質問は、どのようにサンドボックスされているアプリケーションが原因で、Android OS(4.0.4,4.1.1,4.1.2)全体がフリーズしますか?
具体的には、OS全体がフリーズします。 logcat、no adb、何もない!それはOSが得ることができるように冷凍されています。このデバイスはSamsung Galaxy Tab 2です。このアプリではUsbManager
とusb-serial-for-android projectのライブラリを使用しています。図書館ではNDKを使用していますが、私のアプリでは使用できません。本質的に、アプリケーションは、適切なボードとシリアルに通信し、データを受け取り、シリアルコマンドを送信します。私は、USBケーブルを抜いたり、ライブラリのオブジェクトが接続を切断するように指示するとき - それは凍結が発生するまでで、
try {
thread.interrupt();
thread.join();
while(thread.getState() != Thread.State.TERMINATED){
// wait until thread finishes
}
} catch (InterruptedException e) {
e.printStackTrace();
}
それはすべてが正常に動作します:これは、この方法で処分されたワーカースレッド上で実行されます。どちらの方法でも、OS全体が不安定になり、直ちに、またはUSB(ボードまたはコンピュータ)を再び接続するとフリーズします。私はこのフリーズの問題をusb-serial-for-androidプロジェクトに投稿しましたが、まだコメントはありませんでした。私は、USBを解除するときに適切なプロトコルに従っていると信じています。
私は多くのことが間違っている可能性があることを理解しています - 私のアプリはクラッシュすることができます。 al。しかし、もう一度、サンドボックス化されたアプリがOSをクラッシュさせてしまいます。そうすることができれば、サンドボックス化されていないようです。
UPDATE
私は多くの実験の後に、それはアプリをクラッシュしたり、OSを凍結することなく動作しますthread.interrupt();
行を削除していることを発見しました。 USBを取り外すことなくUSBを抜いても、OSはフリーズします。
私はまだサンドボックスアプリケーションがOS全体をフリーズする方法を理解したいと思っています。答えには逃げるコメントがありますが、回答だけではありません。
フリーズのように、ホームボタンを使用して家に帰ることもできないのですか?あなたはエミュレータまたは実際のデバイスを使用していますか?デバイスを使用した場合、そのデバイスは何ですか?それがコンピュータに接続されている場合、logcatは何を言いましたか?何が起こって凍結を起こすことができますか? – Keale
多くのもの。より具体的にする必要があります。 –
私は、満たされていない終了条件、または再帰的に再起動するような動作を伴うタイトなループを探しています。あなたは*(もちろん)*ソース管理を使用しているため、最後に動作していたバージョンにロールバックして、何が原因で問題が発生したのかを調べます。 – andy256