AppleWalker

Walker Softwareのサポートページです。 Mac iPhoneなどApple系のことを書いていきたいと思います。 訪問してくれた、みなさんよろしくね。(^^)ニコ

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
03



応援しよう!
banner3.jpg
 
 
 
アクセス数
 
 
Twitter
 
 
 
 
 
 
Apple-Style Plus
 
 
ApplePeople
 
 
 
 
 
 
 
 
全記事表示リンク
 

iPhoneが強制再起動してしまう理由

[Apple][iPhone][日記]

20140128_001.jpg

最近iPhoneが強制再起動してしまう話をよく聞きます。奥さんのもたまになりますがなぜか僕のはなりません。色々原因があるとは思いますが僕が前から感じている理由を一つだけ書きたいと思います。

後の話に必要なので聞いてください。
以前、メモリーなどの情報を表示するアプリをリリースしていた事があります。そこで当時流行っていたメモリ開放のプログラムを作りましたが、結局僕の時は審査が通らずお蔵入りになってしまいました。(^^;;

その時のプログラムの経験からの話です。メモリ開放の方法は、アプリでわざとたくさんのメモリーを使ってメモリーを圧迫していきます。すると裏に常駐していたSafariや電話アプリ、メールなどを強制終了させてメモリーを開けようとして、その結果メモリーが開放すると言うわけです。

ここで皆さんも気づいたと思いますが、この時に自分のアプリも終了してしまう場合があります。さらに(ここが重要です)ひどい時はiPhoneが強制再起動していまいます。とはいっても今の強制再起動もそうですが、スプリングボード(iPhoneのアプリが並んでいるところ)が落ちてるだけですよね。

macを使っている人ならわかるとは思いますがFinderが強制再起動してる感じです。作っていてこの調整が難しかったです。最初はメモリの開放量ばかりを気にしていましたが、途中から開放はほどほどで、アプリが落ちないように実装しました。

このことから僕が思うのはメモリ解放のアプリはあまりオススメできないということです。この話はこれからの話しに必要なのでこの辺で。

これらを踏まえてなぜ強制再起動が起きるのかを僕なりに考えてみました。

iOS7からバックグラウンドでアプリが動き続けることが認められるようになりました。これがクセモノで、iPhoneは一つのアプリに使えるメモリーの上限が決められています。OneCamでフル解像度で写真を撮るとかなり消費するため、そのことを考慮に入れて一枚づつの撮影、そして保存が終了したら次の写真の撮影、というようなプロセスにしています。

つまり、アプリで使えるメモリーの上限を超えないように作ってあるんです。これを超えるとどんなアプリでもアプリが終了してしまいます。(とはいえアプリが終了するだけです。アプリはサンドボックの中でしか動くことができず自分のアプリ以外にはアクセスできないので他に影響は与えられません)

メモリーリークなどがあると、どんどんメモリーを圧迫して落ちるアプリがありますが、OneCamは使用しながらAppleのツールで調べていてもメモリーリークは一つもありません。もちろんワーニングもです。(^^)

さて、問題はバックグラウンドで動かしているアプリです。iPhoneで使えるメモリーには上限があるので限界はあります。その辺のメモリ管理が、今のiOSはいまいちなんじゃないかなーと思います。先ほどメモリーの圧迫の話をしましたがそれでも強制再起動がおこるわけですから。。。

本来はバックグラウンドでたくさん動かしてもiOSがきちっと管理しなければいけないとは思いますが、現実に強制再起動してしまうのは事実です。バックグラウンドでたくさん動かしている最中、大量のメモリーを必要とするアプリを立ち上げた時に強制再起動する場合があるそうです。

例えばOneCamで大量のメモリーを使っていてバックグラウンドにいるとします。(動いていなくてもです)そこで他のたくさんのアプリを起動してバックグラウンドに回し、OneCamをバックグラウンドから戻そうとするとメモリーの圧迫がおこります。そして、さっき書いたように強制再起動というようなプロセスのような気がします。(これはiOS側の管理なので起きてはいけないですが。。。

もし逆にアプリ側に問題があると仮定すると、アプリ側でiPhoneを強制再起動できるアプリが作れるということになりますよね。そんなことができるアプリは作れないと思うんです。(^^;;

結論は、今のところうまく付き合っていくしかないと思います。次で直すとはアナウンスされていますが結構たいへんなことじゃないかと。。。バックグラウンドといってもずっと動いてるわけではないですからね。メモリーの交通整理は至難の業です。勝手な予想ですがまだまだ時間がかかると思います。

本当に使うアプリだけを最小限立ち上げて使うなどの試行錯誤は必要かもしれないですね。

最後に下のエントリーに書いてあるとおり、僕のiPhoneはカメラに使うiOSのプログラムに不具合があり、エントリー内に書いてある簡単な方法で復元したら直りました。これだけでも試す価値が有るかもしれないので参考にしてください!

iPhone5sの不具合で画面がおかしくなって再起動!でもこれを試したら直ったよ。

僕ら開発者はアップルに与えられた範囲でしか開発ができません。トラブルが起きた時の問題の切り分けはユーザーさんには難しいと思います。これが悩みの一つではあります。とはいえ、「もしかして」ということはいつも想定していますので、アプリも完璧だとは思っていません。さらに色々追求していくつもりです。

僕の周りには本当に暖かい人ばかりで、色々なアドバイスをくれます。本当に感謝感謝です!
まだまだ頑張ります!


関連記事