Java 多次重新启动活动后应用程序崩溃

Java 多次重新启动活动后应用程序崩溃,java,android,multithreading,Java,Android,Multithreading,我有一个我无法理解的极端情况 我在android studio上开发了一个应用程序,在第一个活动中我启动了第二个活动,在第二个活动中我创建了一个SurfaceView子类,它扩展了SurfaceView和ImplementRunnable,并在画布上绘制run(),当我退出线程时,我调用onRestart()再次启动画布线程 到目前为止一切都很好,我打开线程,在循环中绘制一些图像,退出线程循环,重新启动 问题是,在重新启动20次后,应用程序会在没有逻辑原因的情况下崩溃。 你认为问题可能是什么?

我有一个我无法理解的极端情况

我在android studio上开发了一个应用程序,在第一个活动中我启动了第二个活动,在第二个活动中我创建了一个SurfaceView子类,它扩展了SurfaceView和ImplementRunnable,并在画布上绘制run(),当我退出线程时,我调用onRestart()再次启动画布线程


到目前为止一切都很好,我打开线程,在循环中绘制一些图像,退出线程循环,重新启动

问题是,在重新启动20次后,应用程序会在没有逻辑原因的情况下崩溃。 你认为问题可能是什么?如何检查和修复它

此函数是(活动的)surfaceView子类中的线程工作

此函数位于父级活动类上

protected void onRestart() {
    // make some changes, nothing critical to the question
    // examp. count++;
    surface_view.StartThreadWork();
}
我必须说的另一件事是,尽管我不相信这与问题有关,但在创建时我阅读了一些内部文件


谢谢您的帮助。

您有内存泄漏,这可能是由许多原因造成的。一个很好的起点是使用活动的onDestroy()方法来清理您生成的任何资源(如在onCreate方法中创建的内部文件)


此外,还有很多跟踪内存使用情况的工具,在AndroidStudio(AS)中,“Android”视图中有一个“内存”选项卡。此外,您还可以运行“监视”工具(可从命令行或AS中获得),以获取有关您泄漏的资源类型的详细信息。

如果您的应用程序因非本机代码而崩溃,您将在日志中获得堆栈跟踪。如果您有堆栈跟踪,请发布。
protected void onRestart() {
    // make some changes, nothing critical to the question
    // examp. count++;
    surface_view.StartThreadWork();
}