首先解释一下项目是如何设置的:
- 具有两个类的 Android 库项目:
- UserActivity - 在 HolderClass 中使用静态字段
- HolderClass - 这个有静态字段数据
- 引用 Library 项目的 Android 应用程序只有一个类:
- StarterActivity - 当应用程序启动时,在 onCreate 中它将静态字段 Data 设置为某个值,并启动 UserActivity
现在,问题是:有时我会为该静态字段 Data 获得 java.lang.NullPointerException - 好像我从未初始化它(或者同时删除了值)。它从未在我的测试设备上发生过,但我不断收到来自客户端设备的错误报告。我只能猜测这是怎么发生的——也许用户离开应用程序,然后返回并且系统重新创建整个应用程序上下文,但在那个上下文中 HolderClass 有空的静态字段 Data?
我的问题:
从 Activity 的 onCreate 方法初始化该静态字段是否错误?我应该将数据放在 ApplicationContext 中吗?还是做点别的?
我愿意接受所有建议。
PS 如果您在从描述中进行可视化时遇到问题,以下是我所说的所有内容在代码中的外观:
// 在安卓应用项目中 公共类 StarterActivity 扩展 Activity { @覆盖 公共无效 onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 刚刚在库中启动活动 Intent myIntent = new Intent(this, AutolaunchActivity.class); startActivityForResult(myIntent, 1); } @覆盖 protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // 当库中的活动退出时退出 结束(); } } // 在图书馆项目中 公共类 HolderClass { 公共静态字符串数据; } 公共类用户活动扩展活动{ @覆盖 公共无效 onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 初始化布局 } 公共无效 someButtonClicked() { HolderClass.Data.trim(); } }