我写了一个MapActivity类,可以显示一组地点以及单个地方.在启动时,应用程序将创建此MapActivity的实例,并显示多个位置.如果用户点击某个地方,则会启动一个新的活动,显示所选地点的详细信息.此活动具有允许用户在地图上查看该地点的菜单项 – 这将导致创建MapActivity的新实例,但现在只显示此单个位置.
现在的问题是,如果用户导航返回到第一个MapActivity(显示多个地方的地图),那么将遇到OutOfMemoryErrors不再加载图块.
根据Android JavaDocs,每个进程只能有一个MapActivity.但是,我不想将MapActivity定义为singleInstance / singleTask,因为用户应该始终能够导航回到显示多个地方的第一个MapActivity.
我看到Android的Google地方资讯应用程式(搭配Google Map 4.4)使用了多个MapActivity实例.这怎么可能?我的应用程序如何实现?
解决方法
According to the Android JavaDocs,it
is only possible to have one
MapActivity per class
它不是每个类的一个地图视图,它是每个进程.
众所周知,在一个进程中使用多个地图时可能会遇到一些问题.通常情况(您的应用程序在一个进程中运行),如果您没有配置任何特定的.
你可以使用你的清单中的android:process属性来分配你的acitivites:
<activity android:name=".activity.directory.MapView1" android:process=":MapView1"> <activity android:name=".activity.directory.MapView2" android:process=":MapView2">
这样您就可以在单独的进程中运行这些活动,如果不在活动中使用任何共享的静态变量,这些功能会很好.
另请参阅关于android bug跟踪器中的bug的讨论: