« JIT 化された Dalvik で 1.5 倍速! | トップページ | Android のマルチタスク(2) »

2010.04.17

Android のマルチタスク

Tuboroid の作者がマルチタスクについて書いてるのを見た。
ここここ
#あっという間に En2ch が抜かれたからね。。;;
#凄い作者だから、気になって見てる。

でも、「スレッドを使ってない場合」、という一言が足らなくないかい?

バックグラウンドに回ったアクティビティは基本的に電池を食わない、は一応正しいけど、スレッドを使っているアクティビティの場合、スレッドそのものはバックグラウンドでも普通に動く。当然、普通に電池は食う。
もちろん、スレッドを使うアプリの作者は、できるだけ電池を食わないように作るので、基本的には食わないというのは正しいかもしれない。
でも、Android のマルチタスク・マルチスレッドを生かすアプリを考えると普通にスレッドを使う。
javaは言語仕様でスレッドを規定しているので、スレッド使うの簡単だし。

実際、先週リリースした拙作の CPUMonitorMini は、バックグラウンドでもスレッドは動いてる。<棒グラフを更新しているのは1つのスレッド。
ただのアクティヴィティなので、バックボタンを押すと死ぬけど、ホームボタンを押してバックグラウンドにまわせば、スレッドでずっと動いてる。

。。。と、CPUMonitorMini の宣伝をしたくて、久しぶりに blog を書いてみたのだった^^;

あと、アクティビティとサービスを分けて考えてるけど、GUI を持てるか持てないかだけで、たいして変わらない。
アクティビティでもサービスでも、裏で動かそうとしたら、自分でスレッドを作って回す必要がある。
サービスは GUI を持たないから、メモリ消費が少ない分、OS から殺されることも少ないとは思うが、実際は、平気で殺される。
一応、onLowMemory() が呼ばれるのが、アクティヴィティより先のことが多いので、そこで何かしら手を打って、殺されないようにすることは可能だけど、DevPhone とかメモリが少ない機種の場合、どうしても殺されてしまう。
なので、AlarmManager を使って、定期的に起こす必要がある。
でも、電源 On/Off やアプリのインストール・アップデートをすると、AlarmManager で設定した内容も全部消されて。。動けなくなる。。。;;

(←フリーソフトを作るモチベーションアップのために、ぜひ。)

|

« JIT 化された Dalvik で 1.5 倍速! | トップページ | Android のマルチタスク(2) »

Android」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: Android のマルチタスク:

» Activityとマルチスレッド [oops]
Android のマルチタスク: 最近のちょっ得 うーん、原則論で言えばActi... [続きを読む]

受信: 2010.04.19 10:20

« JIT 化された Dalvik で 1.5 倍速! | トップページ | Android のマルチタスク(2) »