我的应用程序有调用MainActivity和它的一个成员的活动类使用Activity类的静态成员是在后台服务
public static SharedPreferences prefsdefault;
我的应用还运行在背景上的服务(在另一个处理)。在我写的服务里面
MainActivity.prefsdefault.getString(Key,"Hello");
该应用程序有时会在此行抛出空指针异常。为什么?这意味着当我关闭该活动并且无法在任何时候访问它(当我的服务运行时)时,垃圾收集器清理此成员?那么对此的完美解决方案是什么?
我应该将MainActiviy.class传递给服务吗?当我实现一个需要上下文的线程时也会发生这种情况。
我不明白“消灭”这个词,如果我在我的活动中有static boolean x = true,并且它在应用程序中设置为false。现在,如果操作系统重新启动我的应用程序,x会是True还是False? – yasserbn 2013-03-10 18:42:32
这是真的。出于同样的原因,如果你有一个对象初始化的地方,如果os需要你的应用程序的资源,指向该对象的指针变为null。 – fedepaol 2013-03-10 18:44:15
这是我应该避免在Activity中使用静态字段的原因吗?现在,如果我想调用(从我的活动)一个线程,需要在活动中声明的对象的信息?那么解决方案是什么?将MainActivity.class传递给Thread构造函数?也许? – yasserbn 2013-03-10 18:50:54