Fragment代替UnityPlayerActivity

废话

关于Unity的Android插件制作,一直有个问题困扰,刚开写插件基本上都是从继承UnityPlayerActivity开始学起的,也不会封装插件,如果有新需求就把新的功能加到一起。

后来看到ShareSDK里面,他的文件是可以单独使用的,就感觉这个好神奇啊,如果我写的也可以这样,那么写一次以后不就可以多次使用嘛。但是有个问题,如果多个插件都继承UnityPlayerActivity如何一起使用?

通过自己总结,就是尽量不继承UnityPlayerActivity,要使用到Context的时候可以通过UnityPlayer.currentActivity来获取,这个还是通过看别人的代码知道的,其实。。。算了没什么说的,多看文档吧。

今天遇到一个问题就是我要使用Activity里的onActivityResult这个方法来开启录屏,我有想到通过多添加一层Activity,在这层里面来开启录屏然后再关闭,但是录屏在初始化的时候用到

getSystemService(MEDIA_PROJECTION_SERVICE);

这个会和当前Context关联,如果开启录屏后关闭Activity,这个录屏的进程可能也会被干掉(只是猜测没有试,这个不是重点)。

重点

在网上看到一篇文章,也写到了尽量不要继承UnityPlayerActivity,他使用的Fragment

Fragment可以理解为Activity的片段,可以多个同时运行,大平板上的设置使用的就是这玩意。Activity的很多生命周期都可以在这里面找到对应的,代码也基本上都一样。

下面是他的启动代码

1
2
screen = new ScreenRecordActivity();
getFragmentManager().beginTransaction().add(screen, "REC").commit();

在android里还有另一种方式来添加,直接在界面上添加

1
2
3
4
5
6
<fragment
android:id="@+id/fragment1"
android:name="com.jay.example.fragmentdemo.Fragmentone" Fragment的类名
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />