ステータスバーの通知から、プロセスへ復帰するには、PendingIntentを使います。が、こいつ、タスクを新しく起動してしまうのです。
何が起こるのかというと、まっさらなフロントエンドに、バックエンドからがんがん表示の更新がかかってくるので、とんでもない時間がカウントされ続け、更に、ボタンは、「スタート」「リセット」のまま、という、全く使い物にならない状況が出現しやがるのです。
解決するには、バックエンドの方に全てのステータスを持たせてしまうか、フロントエンドが多重起動しないようにするか、なのですが、ストップウォッチを二つも三つも起動する意味はないので、起動しない方向で行こうと思います。
PendingIntentのフラグを色々変えて試してみたのですが、今ひとつうまくいかず(>_<)
結局、Activityの属性で多重起動を禁止しました。これであれば、既に起動しているタスクがあれば(この場合は必ずあるので)、それをアクティブにするだけになります。
属性は、singleTaskかsingleInstanceかを与えればいいのですが、タスク内で、自分で、アクティビティを多重起動しないならどっちでもいいでしょう。ストップウォッチの場合は、自分で多重起動したりしないので、とりあえず、singleTaskにしておきました。え、しないなら、singleInstanceでいいんじゃないかって? 気分です。
コメント