2011-08-11 6 views
1

バックグラウンドアプリを殺す方法はありますか?iphoneはバックグラウンドアプリを殺す

私は、サウンドを記録してからスクロールビューでプロットするアプリケーションを持っています。私がそれを持っていた問題は、記録が長すぎてプロットしようとしてメモリが足りなくなった場合にクラッシュすることですそれ。これに私の修正は、空きメモリの量を監視し、どのくらいのメモリ使用量のプロットがかかるか予測し、十分でない前に録画を停止することです。その問題は、私がバックグラウンドで実行しているアプリケーションが多いほど、バックグラウンドアプリを殺す代わりに録画を止めれば済むので、didRecieveMemoryWarningの前にiOSが行うようにスペースを確保することができます。私の質問を再現するにはどうすればこれらのバックグラウンドアプリを殺すことができますか? Appleはこれに眉をひそめますか?

+4

この質問をする必要がある場合は、あなたのデザインが壊れていると思います。あなたはモデルからあなたのビューを切り離し、メモリ不足の警告に対処するために十分なインテリジェンスを与えるべきです。 UITableViewは、表示できるビューに対して本質的に同じことを行います。 – Tommy

答えて

5

フォアグラウンドアプリから他のバックグラウンドアプリをプログラムで削除したいですか?私はアップルがそれを嫌うだろうと思う。

理論的には、プロセスIDをsysctlから取得してSIGKILLを送信して終了することができますが、iOS won't let youは、root(jailbreakingを意味する)でない限り、他のプロセスに関する情報を取得します。

+0

それは私がシステムルーチンを呼び出すのと同じように簡単なものになることを望んでいたことは残念です。まあ、私はそれがレコードとしてプロットする必要があると思う私はさらに良く見えるだろうと思います。ありがとうございました。 – Daniel

+0

また、メモリ警告を受け取ったときに録画を停止することもできます。最初の警告でできることを解放するが、2回目の警告で停止する(または3回目の警告を待つことも可能) – progrmr

+0

プロセスIDを合法的に取得するには、http://www.macstoriesを参照してください。 net/reviews/appswitch-cool-process-management-app-for-iphone /私は彼らがURLスキームデータベースとASLログの組み合わせを使用していると思います。 – Jano

1

iOSは、メモリ警告の送信を開始すると同時に、未使用のバックグラウンドアプリの終了を開始します。しかし、メモリの警告を受け取るべきではありません。代わりにメモリ管理を修正してください。

1

バックグラウンドアプリを殺しても問題は解決しません。他のすべてのアプリが殺されても、あなたのアプリはしばらく後にクラッシュします。

これらのデータを保存してストレージに定期的に書き込むには、小さなバッファを使用することを検討してください。ユーザーが古いレコードをスクロールして読み取る必要がある場合は、そのレコードをストレージから読み戻します。ウィンドウのサイズを制限することで、アプリは一定量のメモリしか使用しません。

関連する問題