表題の通りですが、アプリを作ってると非常駐アプリという言葉聞きますがどんなものと話を聞いていると、んっ?て思うことがあります。
んで国や人によるところがあるっぽいですが大きく分けて二通りあるっぽいです。
1.常に動いていないアプリ。サービスなどでバックグラウンド動作などが無い。
ただシステムが切るまでプロセスは残る。
2.プロセスも完全に消えてる。
ちなみに普通にアプリを作ると1になります。
単純に新規アプリ作成>空のままインストールという感じの空アプリでも1の状態になります。
これはアンドロイドは「アプリが終了した=終了したのでいつでもシステム側で消していいよ」という仕組みのためです。
いくつか理由はあると思いますがわかりやすい理由の一つとしては
終了してもまた立ち上げる事あるよね?
その場合、最初に使ったデータが残ってたら使い回せば負荷も軽いし速度も早いよね。
っていう事です。
IOSでも同じように前に起動したアプリをすぐ立ち上げれますが同じ理由が少しはあるのではないでしょうか。また2のような形はアンドロイドは推奨していませんが最新版のOSでも未だに意見が変わってないところみると実際のところメリットがないんだろうな~とは思ってます。
んでどっちがいいの?って話ですが、ぶっちゃけそんな変わらないですし好みによるかと思います。
1のタイプに対して2のタイプの思いつくメリット、デメリットを上げるとすると
・メリット
とりあえず目にみえて動いてないって分かる事くらいかなと思います。
なのでここらへんが気になるって人にはメリットあるんじゃないかな。
メモリーが残らないので動作が軽くなるのはメリットじゃないのって?話もありますがタイミングの話で終了した時に消すか、端末が消さなきゃと思ったときに消すかの違いで動作とはあまり関係ないかなと。。
余談ですが
重くなる=メモリー利用量多い ではなく
重くなる=めっちゃCPUが動いてるで考えたほうがいいかと
なので動作が重くなるのが気になるのであれば、同時に動いているアプリを知る必要があると思われ。。
*多くの場合、スクリーンオンしたタイミングでウィジェットやバックグラウンドが再起動されるのでそこらへん改善すると軽くなったりという事はよくあります。
さらに余談ですが
メモリー利用量が気になる場合でブラウザアプリが動いている場合なら、アプリが利用しているメモリーとは別にシステム側でセキュリティ機能がタブごとに動いてたりするのでブラウザアプリをクリアするだけで結構変わる場合あります。
・デメリット
とりあえずバッテリーには優しくないです。
毎度新規で起動するのでそれだけ負荷がかかります。
例えば単純に一度の起動で
・メモリー10M、CPU利用 1秒
かかるようなアプリがあるとします。
1のようなタイプだと2度目以降はそんなに上がりません。
*自分の端末で似たようなアプリを用意してテストしてみたときは
メモリーは数Kb~1M程度の微量な変化、CPU利用は0.2~3秒あたり増加していく程度
2のタイプだと常に新規起動なので単純に毎回メモリー10M、CPU利用 1秒あたり増加していくわけです。
ちなみにバッテリー消費などを監視してくれるアプリでみると、監視タイミング時にプロセスが残っていないと情報もなにもないので2のタイプは出てこない可能性が高いです。
あと実際の利用メモリーも同じ理由で見えない可能性が高いです。
ここら辺が2のタイプが優れてるとか言われてる原因の一つと私は思ってます。
というわけで簡単に書きましたが個人的には使うユーザーが納得できて気持ちよく利用できればどちらでもいいです。どちらが優れてるとも思いません。
最後に個人的な愚痴ですが
2のタイプのアプリはメモリー使ってないからいいんだよと何度か言われたことがありますが。
別にメモリー使ってないわけじゃないですよ?見えてないだけですよ?という事が分かれば幸いです。
まぁ出す側に対してはこうだから偉いんだみたいな発言をしている方もいますので言いたいことはいっぱいありますがおいておきます。。。
とりあえず監視だったり時計みたいな都度更新が必要なタイプ以外のアプリならウィジェットも定期処理もできますので非常駐を理由にしてできないは通らないと思います。
ウィジェット画面配置したあとプロセス切っても画面に登録されたクリック動作は残りますので。
定期処理なら例えばですがアラームすればいいでしょ?と言っておきます。
*アラームはOS2系だときついかもですし短いスパンだと負荷は高いですが。。
ではでは(・ω・)
んで国や人によるところがあるっぽいですが大きく分けて二通りあるっぽいです。
1.常に動いていないアプリ。サービスなどでバックグラウンド動作などが無い。
ただシステムが切るまでプロセスは残る。
2.プロセスも完全に消えてる。
ちなみに普通にアプリを作ると1になります。
単純に新規アプリ作成>空のままインストールという感じの空アプリでも1の状態になります。
これはアンドロイドは「アプリが終了した=終了したのでいつでもシステム側で消していいよ」という仕組みのためです。
いくつか理由はあると思いますがわかりやすい理由の一つとしては
終了してもまた立ち上げる事あるよね?
その場合、最初に使ったデータが残ってたら使い回せば負荷も軽いし速度も早いよね。
っていう事です。
IOSでも同じように前に起動したアプリをすぐ立ち上げれますが同じ理由が少しはあるのではないでしょうか。また2のような形はアンドロイドは推奨していませんが最新版のOSでも未だに意見が変わってないところみると実際のところメリットがないんだろうな~とは思ってます。
んでどっちがいいの?って話ですが、ぶっちゃけそんな変わらないですし好みによるかと思います。
1のタイプに対して2のタイプの思いつくメリット、デメリットを上げるとすると
・メリット
とりあえず目にみえて動いてないって分かる事くらいかなと思います。
なのでここらへんが気になるって人にはメリットあるんじゃないかな。
メモリーが残らないので動作が軽くなるのはメリットじゃないのって?話もありますがタイミングの話で終了した時に消すか、端末が消さなきゃと思ったときに消すかの違いで動作とはあまり関係ないかなと。。
余談ですが
重くなる=メモリー利用量多い ではなく
重くなる=めっちゃCPUが動いてるで考えたほうがいいかと
なので動作が重くなるのが気になるのであれば、同時に動いているアプリを知る必要があると思われ。。
*多くの場合、スクリーンオンしたタイミングでウィジェットやバックグラウンドが再起動されるのでそこらへん改善すると軽くなったりという事はよくあります。
さらに余談ですが
メモリー利用量が気になる場合でブラウザアプリが動いている場合なら、アプリが利用しているメモリーとは別にシステム側でセキュリティ機能がタブごとに動いてたりするのでブラウザアプリをクリアするだけで結構変わる場合あります。
・デメリット
とりあえずバッテリーには優しくないです。
毎度新規で起動するのでそれだけ負荷がかかります。
例えば単純に一度の起動で
・メモリー10M、CPU利用 1秒
かかるようなアプリがあるとします。
1のようなタイプだと2度目以降はそんなに上がりません。
*自分の端末で似たようなアプリを用意してテストしてみたときは
メモリーは数Kb~1M程度の微量な変化、CPU利用は0.2~3秒あたり増加していく程度
2のタイプだと常に新規起動なので単純に毎回メモリー10M、CPU利用 1秒あたり増加していくわけです。
ちなみにバッテリー消費などを監視してくれるアプリでみると、監視タイミング時にプロセスが残っていないと情報もなにもないので2のタイプは出てこない可能性が高いです。
あと実際の利用メモリーも同じ理由で見えない可能性が高いです。
ここら辺が2のタイプが優れてるとか言われてる原因の一つと私は思ってます。
というわけで簡単に書きましたが個人的には使うユーザーが納得できて気持ちよく利用できればどちらでもいいです。どちらが優れてるとも思いません。
最後に個人的な愚痴ですが
2のタイプのアプリはメモリー使ってないからいいんだよと何度か言われたことがありますが。
別にメモリー使ってないわけじゃないですよ?見えてないだけですよ?という事が分かれば幸いです。
まぁ出す側に対してはこうだから偉いんだみたいな発言をしている方もいますので言いたいことはいっぱいありますがおいておきます。。。
とりあえず監視だったり時計みたいな都度更新が必要なタイプ以外のアプリならウィジェットも定期処理もできますので非常駐を理由にしてできないは通らないと思います。
ウィジェット画面配置したあとプロセス切っても画面に登録されたクリック動作は残りますので。
定期処理なら例えばですがアラームすればいいでしょ?と言っておきます。
*アラームはOS2系だときついかもですし短いスパンだと負荷は高いですが。。
ではでは(・ω・)