我有这种我无法理解的奇怪情况。
我在android studio上开发了一个应用程序,在第一个活动上我启动了第二个活动,在第二个活动上,我创建了一个SurfaceView子类,它扩展了surfaceView和实现Runnable并在run()内的画布上绘图,当我退出时线程我调用onRestart()来再次启动画布线程。
到目前为止一切都很好,我打开线程,在循环中绘制一些图像,退出线程循环,重新启动。问题是,重启20次后,应用程序崩溃,没有逻辑原因。 您认为问题是什么?如何检查并修复它?
这个函数是surfaceView 子类(活动的)中的线程工作
@Override
public void run() {
while (!_susspendThread) {
// draw images
}
onRestart();
}
此功能位于父活动类
上protected void onRestart() {
// make some changes, nothing critical to the question
// examp. count++;
surface_view.StartThreadWork();
}
我必须说的另一件事虽然我不相信它与问题相关的是onCreate我读了一些内部文件。
感谢您的帮助。
答案 0 :(得分:0)
你有内存泄漏,这可能来自很多方面。一个好的开始,就是使用Activity的onDestroy()方法来清理你生成的所有资源(比如你在onCreate方法中创建的内部文件)。
此外,还有大量用于跟踪内存使用情况的工具,在AndroidStudio(AS)中,“Android”视图中有一个“内存”选项卡。此外,您可以运行“监视”工具(可从命令行或AS中获取)获取有关您正在泄漏的资源类型的详细信息。