多重起動するなっ!

  • 投稿日:
  • by
  • カテゴリ:

ステータスバーの通知から、プロセスへ復帰するには、PendingIntentを使います。が、こいつ、タスクを新しく起動してしまうのです。

何が起こるのかというと、まっさらなフロントエンドに、バックエンドからがんがん表示の更新がかかってくるので、とんでもない時間がカウントされ続け、更に、ボタンは、「スタート」「リセット」のまま、という、全く使い物にならない状況が出現しやがるのです。

image

解決するには、バックエンドの方に全てのステータスを持たせてしまうか、フロントエンドが多重起動しないようにするか、なのですが、ストップウォッチを二つも三つも起動する意味はないので、起動しない方向で行こうと思います。

PendingIntentのフラグを色々変えて試してみたのですが、今ひとつうまくいかず(>_<)

結局、Activityの属性で多重起動を禁止しました。これであれば、既に起動しているタスクがあれば(この場合は必ずあるので)、それをアクティブにするだけになります。

属性は、singleTaskかsingleInstanceかを与えればいいのですが、タスク内で、自分で、アクティビティを多重起動しないならどっちでもいいでしょう。ストップウォッチの場合は、自分で多重起動したりしないので、とりあえず、singleTaskにしておきました。え、しないなら、singleInstanceでいいんじゃないかって? 気分です。