◉ANTIGRAVITY LABEN
記事一覧/アプリ開発
▣ アプリ開発/2026-07-06上級

端末を熱くしないライブ壁紙 — WallpaperService の描画ループを電力予算から設計する

ライブ壁紙は常時描画のせいで電池を削りがちです。可視性・アイドル・熱状態の3軸で描画を止める WallpaperService.Engine の設計と、適応フレームレート制御による消費電力の実測を、個人開発の壁紙アプリの文脈でまとめました。

Android27ライブ壁紙WallpaperServiceパフォーマンス8Antigravity377

✦ プレミアム記事

星がゆっくり瞬く壁紙アプリに、ある日こんなレビューがつきました。「絵はきれいだけど、設定した日から電池の減りが倍くらいになった」。星の数はわずか数百、描画も単純なアルファ変化だけ。それでも実機で確認すると、画面を消していても CPU が動き続け、端末はほんのり温かいままでした。星がきれいでも電池を削れば評価は下がり、評価が下がれば AdMob の表示機会も細ります。壁紙アプリにとって電池は、絵の美しさと同じ重さの品質です。

ライブ壁紙の描画は「見えていないときも回り続ける」性質を持っています。ホーム画面に戻るたび、アプリを切り替えるたび、画面がロックされるたびに、描画スレッドがどう振る舞うかを設計していないと、静かに電力を垂れ流します。ここでは Google Play で配信している個人開発の壁紙アプリで、実際に電池消費を約6割削った、WallpaperService の描画ループの設計をまとめます。計測の反復には Antigravity のエージェントを使いました。

ライブ壁紙が電力を食う本当の理由

多くのサンプルコードは、Engine の中で Handler.postDelayed を使い、固定間隔で draw() を呼び続けます。これは動いている間は問題なく見えますが、電力の観点では3つの穴があります。

ひとつめは、可視性を無視した描画です。onVisibilityChanged(false) が来てもループを止めない実装だと、ホーム画面が別アプリに覆われている間も描画が続きます。ふたつめは、内容が変わらないフレームまで描き直すことです。星が完全に静止する瞬間や、アニメーションが1周して同じ画になる区間でも、律儀に60fpsで再描画すれば、その分だけ GPU とディスプレイのコンポジタが働きます。みっつめは、端末が発熱してサーマルスロットリングに入っても、要求フレームレートを下げないことです。熱くなった端末で高フレームレートを要求し続けると、システムがクロックを落とし、かえって1フレームあたりのコストが上がる悪循環に入ります。

つまりライブ壁紙の電力は、絵の複雑さよりも「いつ描くのをやめるか」の設計でほぼ決まります。私はこの前提に立って、描画を止める条件を明示的に持たせる方向へ作り直しました。

描画ループを「電力予算」から逆算する

先に予算を決めます。私の目安は「画面表示中で 60fps、静止時とアイドル時はゼロ描画、平均して画面点灯1時間あたりの追加消費を 30mAh 以内」に置きました。3,000〜4,000mAh クラスの端末で、時間あたり 1% 前後に相当します。この上限を超えたら、絵を諦めてでもフレームレートを落とす、という順序を最初に固定しておきます。

予算を守るために、描画ループへ次の3つのゲートを差し込みます。可視性ゲート(見えていなければ描かない)、アイドルゲート(内容が変わらなければ描かない)、熱ゲート(熱ければフレームレートを落とす)。この3つはいずれも「描画を減らす」方向にしか働きません。増やす判断は入れないことで、暴走を構造的に防ぎます。

ゲート判定材料効果
可視性onVisibilityChanged非表示中は描画スレッドを完全停止
アイドルフレーム差分・入力の有無変化がなければ次フレームを要求しない
熱状態PowerManager のサーマル通知60→30→10fps へ段階的にダウンシフト
✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦可視性・アイドル・熱状態の3軸で描画を止める WallpaperService.Engine の実装
✦フレームレートを 60→30→10fps と段階的に落とす適応制御で消費電力を最大 62% 削減した実測
✦adb と dumpsys batterystats を Antigravity エージェントに回させる電力計測パイプライン
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

▣ アプリ開発2026-05-25
Antigravity の Inline Edit と Agent モードを壁紙アプリ運用で1ヶ月使い分けた所感
壁紙アプリ4本の実運用で Antigravity の Inline Edit と Agent モードを1ヶ月使い分けた所感です。実測値・AGENTS.md への判断軸の固定・dSYM 一括統一・クレジット消費まで、現実的な運用設計を共有します。
▣ アプリ開発2026-09-29
Cloudflare をパージしても古い壁紙が届き続けた原因は、オリジン側で JPEG を握っていた XPageSpeed
同じ URL に上書きした壁紙画像が、Cloudflare をパージしても古いまま届き続けた運用の記録です。ローカル・オリジン・エッジの三者を突き合わせて層を名指しする検査、プレフィックスパージの使いどころ、Xserver の XPageSpeed を .htaccess で安全に切る書き方まで扱います。
▣ アプリ開発2026-09-19
見積書 PDF の自動化を一度にまとめて頼み、4 つに割り直すまで
受託の見積書を毎回コピーして作っていた手作業を、Antigravity に頼んで小さな PDF 出力ツールへ移した記録です。最初に全部をまとめて頼んで作り直すことになった理由と、データ・計算・見た目・保存の 4 つに割って渡し直した順番を、動くコードと一緒に書き残します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます