以下是呈现遇到的错误日志消息 这个多次切换选项卡后 就会生成 必现问题
Activity com.pad.normal.activity.FragmentHost has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?
06-08 17:00:07.033: E/ActivityThread(23867): android.app.IntentReceiverLeaked: Activity com.pad.normal.activity.FragmentHost has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?
06-08 17:00:07.033: E/ActivityThread(23867): at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:815)
06-08 17:00:07.033: E/ActivityThread(23867): at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:616)
06-08 17:00:07.033: E/ActivityThread(23867): at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1522)
06-08 17:00:07.033: E/ActivityThread(23867): at android.app.ContextImpl.registerReceiver(ContextImpl.java:1502)
06-08 17:00:07.033: E/ActivityThread(23867): at android.app.ContextImpl.registerReceiver(ContextImpl.java:1496)
06-08 17:00:07.033: E/ActivityThread(23867): at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:467)
06-08 17:00:07.033: E/ActivityThread(23867): at com.baidu.mapapi.BMapManager.a(Unknown Source)
06-08 17:00:07.033: E/ActivityThread(23867): at com.baidu.mapapi.BMapManager.init(Unknown Source)
06-08 17:00:07.033: E/ActivityThread(23867): at com.pad.normal.activity.FragmentHost.onCreate(FragmentHost.java:110)
06-08 17:00:07.033: E/ActivityThread(23867): at android.app.Activity.performCreate(Activity.java:5275)
06-08 17:00:07.033: E/ActivityThread(23867): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
06-08 17:00:07.033: E/ActivityThread(23867): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2166)
06-08 17:00:07.033: E/ActivityThread(23867): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2252)
06-08 17:00:07.033: E/ActivityThread(23867): at android.app.ActivityThread.access$800(ActivityThread.java:139)
06-08 17:00:07.033: E/ActivityThread(23867): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1200)
06-08 17:00:07.033: E/ActivityThread(23867): at android.os.Handler.dispatchMessage(Handler.java:102)
06-08 17:00:07.033: E/ActivityThread(23867): at android.os.Looper.loop(Looper.java:136)
06-08 17:00:07.033: E/ActivityThread(23867): at android.app.ActivityThread.main(ActivityThread.java:5103)
06-08 17:00:07.033: E/ActivityThread(23867): at java.lang.reflect.Method.invokeNative(Native Method)
06-08 17:00:07.033: E/ActivityThread(23867): at java.lang.reflect.Method.invoke(Method.java:515)
06-08 17:00:07.033: E/ActivityThread(23867): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
06-08 17:00:07.033: E/ActivityThread(23867): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)
06-08 17:00:07.033: E/ActivityThread(23867): at dalvik.system.NativeStart.main(Native Method)
用的
baidumapapi_v2_3_1.jar
locSDK_4.0.jar
主框架调整方式 FragmentGis 显示地图 地图可以正常显示 不知道什么原因 每次切换时 oncreate 方法还是会执行
OnTabChangeListener onTabChangeListener = new OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
ft = fm.beginTransaction();
chkGis.setVisibility(View.GONE);
if (TextUtils.equals("first", tabId)) {
ft.replace(android.R.id.tabcontent,apply);
} else if (TextUtils.equals("second", tabId)) {
ft.replace(android.R.id.tabcontent,media);
} else if (TextUtils.equals("third", tabId)) {
ft.replace(android.R.id.tabcontent,record);
} else if (TextUtils.equals("fourth", tabId)) {
chkGis.setVisibility(View.VISIBLE);
ft.replace(android.R.id.tabcontent,gis);
}
ft.commit();
}
};
------解决思路----------------------
Activity com.pad.normal.activity.FragmentHost has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?
这个是说明 注册了广播 但是没有在onPause里面释放广播,否则有内存泄露的可能。
------解决思路----------------------
如果是map地图自带的,应该只需要调用百度地图的相关方法就可以释放。我以前用BAIDU地图没这个问题,你看看文档是不是少写了什么代码。