【Android】Serviceで作成したViewを使う

Activityで立ち上げた時にServiceで作成したViewを使用する時に躓いたところを上げておきます。

■やりたい流れ
1.先にViewを生成しておく(Service)
 ★Activity起動
2.ActivityとServiceをBindする(Activity)
3.Serviceで先に作っておいたView①を( ゚д゚)クレ(Activity)
4.やったね。なんか少し早くなった気がするよ。

1回目のActivityの起動は成功し、
2回目のActivityの起動時に下記のようなエラーが出ました。。。

04-25 23:34:12.393: E/AndroidRuntime(24746): Process: com.example.serviceview, PID: 24746
04-25 23:34:12.393: E/AndroidRuntime(24746): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

これはServiceで生成したView自身が親Viewの状態を持っているため。
2回目の起動時にはすでに一度目の起動時の親Viewを持ってしまっているためにエラーが出てたようです。
なので、Serviceで作ったViewのデータをActivityに渡す際には一度Service側で親Viewを削除してから、Activityに渡すことで上記のエラーを解決することが出来ました。

    public View getSetUpView(){
        ViewGroup view = (ViewGroup) mView.getParent();
        if(view != null) view.removeView(mView);
        return mView;
    }

プロジェクトのサンプル
https://github.com/ginsyama/ServiceView