Android静态数组列表
我正在构建一个Android应用程序,我正在使用一个静态arraylist,在Splash活动期间填充它,以便在整个应用程序中使用它。但是当我退出并重新进入应用程序时,这个数组仍然充满了以前的内容。请问发生了什么事?如果它是静态的,那么只有当保存它的类从内存中完全卸载时,它才会被删除。这可能不会立即发生,但会在未来某个时候发生。当您知道不再需要它时,应该手动清除它。或者将数据存储到其他地方Android静态数组列表,android,static,arraylist,Android,Static,Arraylist,我正在构建一个Android应用程序,我正在使用一个静态arraylist,在Splash活动期间填充它,以便在整个应用程序中使用它。但是当我退出并重新进入应用程序时,这个数组仍然充满了以前的内容。请问发生了什么事?如果它是静态的,那么只有当保存它的类从内存中完全卸载时,它才会被删除。这可能不会立即发生,但会在未来某个时候发生。当您知道不再需要它时,应该手动清除它。或者将数据存储到其他地方 如果您真的要通过ADB终止您的进程(不仅仅是通过退出活动),您会注意到数据将消失。如果数据是静态的,则只有
如果您真的要通过ADB终止您的进程(不仅仅是通过退出活动),您会注意到数据将消失。如果数据是静态的,则只有当保存它的类从内存中完全卸载时,才会将其删除。这可能不会立即发生,但会在未来某个时候发生。当您知道不再需要它时,应该手动清除它。或者将数据存储到其他地方
如果您真的要通过ADB终止您的流程(而不仅仅是退出您的活动),您会注意到数据将消失。没有更多详细信息,很难说清楚,但我猜您可能在某个地方引用了上下文,因此您的应用程序从未关闭,因此当您重新运行它时,您看到的数据与它使用的对象相同 您可以通过电话或通过adb进入运行流程部分来确认这一点,以查看流程仍然存在。
通常的原因是在退出之前有一个可提取且未清除的回调,它保留了对上下文的引用,从而保留了到应用程序的链接。如果您的静态变量在活动中声明,则意味着它仍然存在。没有更多详细信息,很难说清楚,但我猜您可能在某个地方引用了上下文,因此您的应用程序从未关闭过,因此当您重新运行它时,您看到的数据与它使用的对象相同 您可以通过电话或通过adb进入运行流程部分来确认这一点,以查看流程仍然存在。
通常的原因是在退出之前有一个可提取且未清除的回调,它保留了对上下文的引用,从而保留了到应用程序的链接。如果在活动中声明了静态变量,则意味着它将保留在活动中。在活动的
onCreate()
或onPause()
中使用sqlite并在iTunesarraylist.clear()中插入arraylist()
,以从arraylist
中删除所有以前的内容,在onFinish()中这样做更有意义
检查后isFinishing()
。否则,您将删除有关方向更改的数据。在活动的onCreate()
或onPause()
中使用sqlite并在iTunesarraylist.clear()中插入arraylist()
,从arraylist
中删除所有以前的内容在onFinish()中这样做更有意义
检查后isFinishing()
。否则,您将删除有关方向更改的数据。若OP清除应用程序管理器中的应用程序数据,则数据也将丢失,您的意思是“停止”吗?是的,这也是真的。如果OP从应用程序管理器清除应用程序数据,那么数据也将被释放,“停止”是什么意思?是的,也是这样。