また名前がDS

1684 letters | 820 views | コメントする

カメラアプリはひとまずおいといて、Wi-Fiの様子がどうしても気になる。
一応本体の設定で、スリープの時は自動的にWi-Fiが切れる設定にしてるけれども、
それで切れるときと切れないときがあり、切断に強制力がないって事は実感として分かる。
自動通信したがるアプリもあるわけだから、使ってなければ切るという設定をしても、
使ってないわけじゃないって場合もあるんだろうよ。
酷いときは一晩中Wi-Fiオンだし、特に設定を変えなくても一晩中オフの場合もある。
オンの時は通信もしてる。
なんとか、睡眠中の無意味な電力消費を抑えたい物だが、
いくつかのイベント駆動アプリを用い、スリープ時は強制的にWi-Fiを切るという設定をしてみたが、
これをやるとどうしてもWi-Fiの調子がおかしくなり、そのままシステムをフリーズさせる。
アプリが悪いのか機種が悪いのかOSが悪いのか相性なのかは知らないが、
それらのソフトでWi-Fiのオンとかオフとかをやるわけにはいかない。

でもどうしてそうなるのかって事に深入りしたくなったので、Wi-Fiをオンオフするアプリを自作してみた。
スリープ時はちゃんとスリープして欲しいと言うことで、DeepSleepという名前を付けたが、
なんか最近はDSにちなんだ名前ばっかり付いてて、別に意図してやってるわけじゃない。
それでどうだったかというと、Wi-Fiのオンとかオフとかをシングルスレッドでやると
その作業中に他の入力を受け付けない、重たい時間が発生した。
まともなアプリではWi-Fi切り替えをやっても重たくならないが、
自作だとオフに時間がかかって次のオンを受け付けにくいし、オンに時間がかかってロック解除しにくい。
そのまともなアプリ達は、Wi-Fiのオンとかオフとかをバックグラウンドでやって、重くならないようにしてるわけだ。
マルチスレッドを使ってるかも知れないし、遅延させて行ってるのかも知れないし、
ともかく素人がストレートにやるような方法とは別の、ちょっと回りくどいことをしている。

これがわかっただけでもとりあえず収穫があった。
ただWi-Fiをオンオフさせただけでは、システムがフリーズするほどおかしくなるわけがないので、
その回りくどい作業の影響があるかも知れないと疑うことが出来る。
システムにあんまりいろいろ常駐させたくないので、そのまともなイベント駆動アプリを一個常駐させ、
そいつでスリープ時に呼び出すシングルスレッドのWi-Fiオンオフアプリを自作してみた。
当然、切り替えのタイミングで重たくなるわけで、その分だけ不便になってるが、
これによってシステムフリーズが発生しなくなってくれたら、我慢して使うだけの価値はある。

まともなプログラマが作った物ほど、重たくなるようなアプリは作らないわけで、
まともなアプリはWi-Fi切り替え時に何かしらやって、重たくならないように配慮してる。
配慮がないアプリを使ってみたくても、配慮がないアプリはまともじゃないプログラマが作ってるので、
使ってみるのには勇気がいる。
するともう自分であえて配慮がないアプリを作って使ってみるしかない。

という途中経過。
これでもWi-Fiがおかしくなって落ちるのかという様子見と、
もしそうなら全くWi-Fiをいじらなくても落ちるのかという様子見も。

たぶん関連のある記事:

コメントは終了しています。