由于内存不足,Android应用程序崩溃

时间:2010-11-11 15:49:35

标签: android

我的应用程序基本上是一个图像查看器。它可以从相机和单独的应用程序打开。

我打开图像查看器以查看和编辑图片。每个编辑操作都使用线程实现。如果由于按下主页按钮我的应用程序关闭,下次我用相机打开它。它抛出了一个。

这并不总是发生。仅在大型图像文件上进行大型编辑操作或编辑操作时。

我出现内存错误,有时会超时。

我想这是因为单击home时线程没有完成编辑操作。它仍然在后台运行。所以当我打开它时无法处理它。

我是对的吗?

如果是这样,在完成/

之前停止线程的方法是什么

你能帮助我吗?

3 个答案:

答案 0 :(得分:0)

看起来像内存泄漏。检查代码中的内存泄漏

答案 1 :(得分:0)

可能会看一下我在大图像上打开内存问题时打开的一个帖子。关于可能对您有何帮助的几点建议: Strange out of memory issue while loading an image to a Bitmap object

答案 2 :(得分:0)

线程不会被垃圾收集,直到它们被停止或它们的进程被终止(这通常需要一段时间,即使在所有活动都关闭之后)。这也意味着这些线程引用的任何对象也不会被垃圾收集。

有多种方法可以关闭线程,具体取决于它究竟在做什么。最好的方法是在执行期间的某些点检查变量,并在设置该变量时退出run - 方法。最佳位置通常在while - 循环的条件下。您可以从外部设置该变量,并且线程将在下次检查时关闭。请记住将该变量标记为volatile。例如:

private volatile boolean mStopped = false;

public void run() {
   while(!mStopped) {
      // do something
      if(mStopped)
          return;
      // do something more
   }
}

如果线程正在等待,您将不得不中断它。请参阅interrupt - Thread - 类的方法。

相关问题