スポンサーサイト

--年--月--日 --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

(今更ながら)Androidにタスクマネージャは不要

2010年06月17日 11:31

(かなり今更なネタなのですが。)
やはり、Androidには、タスク管理アプリ(いわゆるタスクキラー)は不要なのですね。
自分用メモとして書きうつしておきたいと思います。


iPhoneOS4.0がマルチタスクになるらしいのでAndroidのマルチタスクの話をしてみる(1)
http://www.narazaki.info/2010/04/iphoneos40android.html


Androidには、「Activity」と「Service」という仕組みがあるということ。
  • 「Activity」は、”ユーザからアプリケーションとして見えたり隠れたりする部分”
  • 「Service」は、”ユーザから見えずバックグラウンドで動作する部分”
まず、「Activity」について。
こちらは、ユーザから見えている状態の時しか動作できない。
Activityには、3つ状態があって、
  • 「アクティブ」な状態 (ユーザから見えている状態)
    (メモリは使っているし、動作もしている。バッテリを消費する。)
  • 「スリープ」している状態
    (メモリは使ったまま、動作は休止している。バッテリを消費しない。再び切り替える時は、すぐに切り替わる。)
  • 長時間「スリープ」したままだったので一旦終了された状態
    (メモリは開放されている。バッテリを消費しない。再び切り替える時は、再度起動させて復元するので、少し時間がかかる。メモリが足りない時にもこうなる)
例を考えてみると・・・
  1. ユーザがホーム画面から、ブラウザを起動しようとする。
     ・ホーム画面の「Activity」が、「スリープ」する。
     ・ブラウザが起動して、ブラウザの「Activity」が「アクティブ」になり、ユーザにWeb画面を表示する。
  2. 次に、ユーザがホームボタンを押して、ホーム画面に戻ろうとする。
     ・ブラウザの「Activity」が、「スリープ」する。
     ・ホーム画面の「Activity」が、「アクティブ」になり、ユーザにホーム画面を表示する。
    (ホーム画面の「Activity」は、スリープ状態だったので、切り替えは瞬時にできる。)
  3. 次に、ユーザがそこから、連絡先を起動しようとする。
     ・ホーム画面の「Activity」が、「スリープ」する。
     ・連絡先が起動して、連絡先の「Activity」が「アクティブ」になり、ユーザに連絡先画面を表示する。
そして・・・この後・・・
ユーザが連絡先画面ばかり使っていて、なかなかブラウザとかホーム画面に切り替えなかった場合、
ブラウザの「Activity」やホーム画面の「Activity」は、
Androidによって自動的に状態を保存して一旦終了される。
(どの程度で終了されるかは、メモリの空き状態などからAndroidが判断するらしい。)

そして・・・
もし、ユーザが、ブラウザやホーム画面に切り替えることがあれば、
その「Activity」が自動的に再び起動されて状態が復元される。
(再度起動させて復元するので、少し時間がかかる。)

・・・なるほど。

最初にブラウザを起動した後、ずっと他のアプリばかり使っていた時に、
またブラウザに切り替えたら、自分でブラウザを終了させた覚えはないのに、
切り替えに時間がかかることがあるのは、そういうことだったんですね!
又、ホーム画面に戻すのに、少し時間がかかる事がたまにあるのも同じ理由ということ。

次に、「Service」について。
こちらは、状態に関係なく動作することができる。
もちろん、端末のディスプレイがオフになってるロック状態でも動作できる。
(例えば、タイマーのアプリがあって、アプリを表示させている時しか時間が測れなかったら困りますからね。
その場合、ユーザに見せる画面は「Activity」として作り、実際の計測するタイマー部分は「Service」とすれば良いと。)

ただそういうわけなので、動作している間はリソースや電池を消耗する
なので普通は、システムが用意している「アラーム」というサービスに、
指定した時間に自分のサービスを実行してくれ。とお願いしておく。というふうにして使うらしいです。
つまり、自分勝手に一つ一つのサービスをずっと動作させておくのではなくて、
「アラーム」サービスに、”必要な時に必要なサービスだけを、起動させてもらう”ことで、
リソースを節約する
ということ。
(逆にこれに従わず、自分自身のサービスをずっと動作させておくような行儀悪いアプリを入れてると、リソースや電池は早く消耗して行く・・・)

ただし「Service」でも、メモリが足りない時は、
Androidが自動終了させることもある。でも、後でちゃんと、再起動させてくれる。

・・・なるほどなぁ。
[追記]
逆に常駐型のタスク管理(タスクキラー)アプリをいれていると、
タスク管理アプリが他のアプリを終了する → 終了されたアプリをAndroidが自動的に起動させる →
タスク管理アプリが他のアプリを終了する → ...
というようなイタチごっこ的な状態になる場合もあるとのことです。
(つまり、Android自体がCPUパワーやバッテリを無駄に消費してしまう。)
又、タスク管理アプリやその設定によっては、必要なタスクが終了されてしまうことで、
自動更新、同期、アラームの動作などが止まってしまうこともあるようです。

なので尚更、タスク管理アプリは入れないほうが良さそうです。
(入れるとしても、「手動で、指定したアプリを終了する」ようなシンプルなものにするほうが良さそう。
上の問題から考えると、いずれにせよ自動的に終了させるタイプなどは辞めておくべきかも。)
特にどれは終了させても良いかを判断できない方は尚更やめたほうが良いのでは?


p.s.
そういえば、親のAndroidスマートフォンには、
親が”バックグラウンドで色んなアプリが起動したままなのは気持ち悪い”ということで、
「commantalb」というシンプルなタスク管理アプリが入っているのですが、
「そういうのは消しちゃって、タスク管理なんて忘れろ。」とでも言っておいた方が良さそうですねw
(そのアプリでは、アプリの管理はできても、サービスの管理はできませんし。)

普段からPCを触っていて、マルチタスクとかメモリのことを少しでも知っているような人には、
Androidのマルチタスクについて、余計な心配をしなくていいように、もう少し説明が必要なのかもしれません。

ただ、Xperiaあたりについては、行儀の悪いサービスが結構入っているらしく、
それを終了させなければ、バッテリーが早く消費していってしまうこともあるようですが^^;。


スポンサード リンク



コメント

    コメントの投稿


    (投稿者様のEmailアドレスが一般に公開表示されることで
    メールスパムの標的となってしまう事を防ぐために
    本項目はご入力いただいた場合も原則非表示としております。
    当ブログ管理人にEmailアドレスを伝えたい場合や、
    差し支えが無い場合にご入力ください。)
    (コメント編集・削除に必要)
    (管理者にだけ表示を許可する)

    トラックバック

    この記事のトラックバックURL
    http://masapiyo.blog53.fc2.com/tb.php/652-16db1651
    この記事へのトラックバック
    Creative Commons License
    Masanoriのマイペース。なブログ by Masanori is licensed under a Creative Commons 表示-非営利-継承 2.1 日本 License.

    最近の記事

    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。