Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 合并v4库后,静态变量变为null_Android_Performance - Fatal编程技术网

Android 合并v4库后,静态变量变为null

Android 合并v4库后,静态变量变为null,android,performance,Android,Performance,我最近加入了我的Android应用程序,可以在标签上滑动。我观察到应用程序中静态对象变为空的随机崩溃 我阅读了以下文章,这些文章告诉我内存管理的故事,Android通过终止进程来获取内存,重新启动进程并重新启动最新的活动 我也明白这就是为什么静态变量不是存储应用程序数据的好地方。我正在研究首选项&DB作为替代方案。但考虑到数据的复杂性,这需要一些时间 编辑:我不是在活动中存储数据,而是使用具有静态属性的类在应用程序级别保留一组配置 我的问题是,为什么在集成v4支持库之后会遇到这个问题?有没有人在

我最近加入了我的Android应用程序,可以在标签上滑动。我观察到应用程序中静态对象变为空的随机崩溃

我阅读了以下文章,这些文章告诉我内存管理的故事,Android通过终止进程来获取内存,重新启动进程并重新启动最新的活动

我也明白这就是为什么静态变量不是存储应用程序数据的好地方。我正在研究首选项&DB作为替代方案。但考虑到数据的复杂性,这需要一些时间

编辑:我不是在活动中存储数据,而是使用具有静态属性的类在应用程序级别保留一组配置

我的问题是,为什么在集成v4支持库之后会遇到这个问题?有没有人在支持v4 lib时遇到过类似的问题?这与我的问题或我的模糊假设有关吗


下面是我的应用程序崩溃时的日志。我观察了ApplicationConfiguration:getListOrder()方法中的NPE,其中它引用了一个静态变量。日志中是否有任何迹象表明系统已终止进程并重新启动它?或者它们表示不同的东西

!@同步406D/HierarchycalStateMachine(287):handleMessage:E msg.what=83D/HierarchycalStateMachine(287):processMsg: ConnectedStateD/WifiStateMachine(287):ConnectedState{what=83 when=-4ms arg1=5}D/HierarchicalStateMachine(287):handleMessage: XW/PowerManagerService(287):计时器0x3->0x3 | 0x0D/dalvikvm(2775): GC_显式释放61K,5%释放6209K/6531K,暂停 6ms+2msI/fSharp:BackgroundServiceHandler(4637):收到消息: 3I/fSharp:BackgroundServiceHandler(4637):列表消息处理程序 存在,正在发送messageI/fSharp:BackgroundThread(4637):已完成 正在处理出站队列i/fSharp:BackgroundThread(4637):在do中 循环…D/AndroidRuntime(4637):关闭VMW/dalvikvm(4637): threadid=1:线程以未捕获异常退出 (组=0x401b7760)E/AndroidRuntime(4637):致命异常: 缅因州/安德律敦时(4637): java.lang.NullPointerException/AndroidRuntime(4637):在 com.tfs.fsharpsupport.common.configuration.ApplicationConfiguration.getListOrder(ApplicationConfiguration.java:125)E/AndroidRuntime( 4637):在 com.tfs.fsharp.model.ListModel.refreshList(ListModel.java:576)E/AndroidRuntime( 4637):在 com.tfs.fsharp.model.ListModel.onListChanged(ListModel.java:332)E/AndroidRuntime( 4637):在 com.tfs.fsharp.model.ListModel.handleListMessage(ListModel.java:285)E/AndroidRuntime( 4637):在 com.tfs.fsharpsupport.BackgroundServiceHandler.handleMessage(BackgroundServiceHandler.java:104)E/AndroidRuntime( 4637):在 android.os.Handler.dispatchMessage(Handler.java:99)E/AndroidRuntime( 4637):位于android.os.Looper.loop(Looper.java:132)E/AndroidRuntime( 4637):在 android.app.ActivityThread.main(ActivityThread.java:4028)E/AndroidRuntime( 4637):位于java.lang.reflect.Method.Invokenactive(本机) 方法)E/AndroidRuntime(4637):在 invoke(Method.java:491)E/AndroidRuntime( 4637):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)E/AndroidRuntime( 4637):在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)E/AndroidRuntime( 4637):在dalvik.system.NativeStart.main(本机) 方法)W/ActivityManager(287):强制完成活动 com.tfs.fsharp.ui.activity/.StartupActivityE/android.os.Debug(287): Dumpstate>/data/log/Dumpstate\u app\u errorI/Dumpstate(5407): beginD/HierarchycalStateMachine(287)


显然,当你通过标签交换时,你的活动在幕后被扼杀。希望你知道我的想法

至于您的信息,在活动中使用静态变量不是一个好的做法。您经常会遇到
空指针异常
。如果您坚持使用静态变量而不是共享首选项或内容提供商,那么我认为您应该遵循以下方法

我曾经有过同样的问题,我声明了一个单独的类,并将其用于静态变量。通过对清单文件进行更多的行和更改,您可以使它们成为全局的,并在应用程序范围内使用它


.

很可能您的apk现在变大了,因此可能会面临内存问题,特别是当您的静态变量中有大量数据时。但是,终止和重新启动应该由日志指示。您可以查看下面的日志并告诉我服务是否被终止吗?