所以我开发了一个简单的应用程序作为独立资格的一部分,它工作得很好,所以我发布它并将apk上传到Play商店。我可以从Play商店下载的工作正常,一切都很好。
我大约一周左右回到我的项目文件,为我的应用程序添加更新,并在运行它(没有做出任何更改)时,我现在得到了内存泄漏的内容。
之前没有发生这种情况,在恢复到我的应用程序的旧版本时,他们现在都表现出这个问题。
当使用默认的Android导航栏模板在片段之间切换(我总共有三个,其中一个只有一个文本视图,没有代码)时,它们似乎闪烁 - 过渡不像我的最终那样无缝和平滑apk从Play商店下载。
另外,在logcats中,当我在片段之间切换时,我发现以下消息:
MinWidth
当我继续这样做时,这会重复,并且探查器中的内存使用量也会增加。
偶尔也会看到这条消息:
I/zygote64: After code cache collection, code=122KB, data=92KB
I/zygote64: Increasing code cache capacity to 512KB
我对Android开发非常陌生,但据我所知,这似乎是内存泄漏。
我觉得很奇怪,我的应用程序不再有用,但我的apk文件仍能完美运行。我在我的Android手机上运行了一切,最近更新到奥利奥(这可能是原因)吗?
希望知道Android内存泄漏原因的人可以帮助我。
我很高兴提供代码,但总结一下,我的应用程序非常简单,包含3个片段,其中一个包含一个RecyclerView连接到一个SQLite数据库,另一个有两个按钮和一个ImageView。 / p>
这个项目将在两周内完成,这个问题在回到开发阶段后让我脱掉头发!
感谢。
根据要求,这是我的代码,用于根据选择的navmenu项目打开片段(这位于MainActivity中)
I/zygote64: Compiler allocated 4MB to compile void android.view.View.<init>(android.content.Context, android.util.AttributeSet, int, int)
I/zygote64: Compiler allocated 8MB to compile void android.widget.TextView.<init>(android.content.Context, android.util.AttributeSet, int, int)
这是我的代码片段,其中包含RecyclerView,以及对我的SQLite数据库的引用。此外,有一个工厂开启了一项新的活动,但我觉得这不会引起任何问题,因为闪烁和内存增加纯粹是在3个片段之间切换时。
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
Fragment fragment = null;
String title = "";
int id = item.getItemId();
if (id == R.id.nav_tasks) {
fragment = new TaskFragment();
title = "Tasks";
} else if (id == R.id.nav_alarm) {
fragment = new AlarmFragment();
title = "Alarms";
} else if (id == R.id.nav_settings) {
fragment = new SettingsFragment();
title = "Settings";
}
if(fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.screen_area, fragment);
ft.commit();
getSupportActionBar().setTitle(title);
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
}