- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个带有服务的程序 - 该服务是“START_STICKY”。因此,当我关闭程序(我正在使用 Advanced Task Killer 来终止程序)时,服务会自动重新启动,但这会出现问题,因为我在尝试调用时遇到错误:
ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203) (see stacktrace below).
我已经创建了一个类来处理上下文,如果它不为空,它将返回我的 Activity 的上下文,或者如果 Activity 的上下文为 null,则返回我创建的假的 - 而 Activity 的上下文为 null,所以使用假的,我怀疑这可能是问题所在,但不知道。在我的 Activity 中,我有一个构造函数,它为 contexthandling
类提供了它自己的引用,但是当系统重新启动我的时, Activity 似乎没有实例化(至少在服务启动之前)服务。
程序刚正常启动时当然没有问题,服务启动正常;这就是我怀疑假上下文的原因,我按如下方式创建了它(它在带有 android:name=FakeContext
的 list 应用程序标记中被引用):
public class FakeContext extends android.app.Application
{
private static FakeContext m_instance = null;
public FakeContext()
{
}
public static synchronized Context getContext()
{
if(m_instance == null)
{
m_instance = new FakeContext();
}
return m_instance;
}
}
堆栈跟踪:
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): FATAL EXCEPTION: main
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): java.lang.RuntimeException: Unable to create service sdo.GeoTracker.Services.DataService: java.lang.NullPointerException
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): at android.app.ActivityThread.handleCreateService(ActivityThread.java:3140)
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): at android.app.ActivityThread.access$3300(ActivityThread.java:135)
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2202)
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): at android.os.Handler.dispatchMessage(Handler.java:99)
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): at android.os.Looper.loop(Looper.java:144)
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): at android.app.ActivityThread.main(ActivityThread.java:4937)
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): at java.lang.reflect.Method.invokeNative(Native Method)
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): at java.lang.reflect.Method.invoke(Method.java:521)
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): at dalvik.system.NativeStart.main(Native Method)
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): Caused by: java.lang.NullPointerException
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:98)
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): at sdo.GeoTracker.DataAccess.SqlAdapter.<init>(SqlAdapter.java:51)
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): at sdo.GeoTracker.DataAccess.SqlAdapter.getInstance(SqlAdapter.java:61)
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): at sdo.GeoTracker.Services.DataService.startService(DataService.java:65)
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): at sdo.GeoTracker.Services.DataService.onCreate(DataService.java:40)
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): at android.app.ActivityThread.handleCreateService(ActivityThread.java:3125)
11-18 19:12:14.048: ERROR/AndroidRuntime(15655): ... 10 more
非常感谢任何帮助!- 我是android开发的初学者,所以请把它说出来。
最佳答案
Application 类是 Android 框架的一部分,您不能仅使用构造函数等创建它。使用您应用的 Application 对象,而不是使用“假”对象
关于Android SQLite ContextWrapper.openOrCreateDatabase() 空指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4219486/
我注意到当我右键单击该项目并选择“作为 Android 应用程序运行”时,openOrCreateDatabase 只能在模拟器中使用,而不能在手机中使用。我已经检查了 DDMS,数据库是通过模拟器成
我有我的 DAO 类,当我调用我的类 conexao 时,该方法返回 null,但为什么? public void criarBanco() { Conexao conexao = n
我需要帮助。我有一个带有自定义适配器的 ListView,在这个 ListView 中我有一个 CheckBox 并且在 onClick 方法中应该更新我的数据库中的一个表。我的 CheckBox 的
我在打开数据库时在我的 EhActivity 类中遇到 NullPointerException public class EHActivity extends Activity { ArrayLi
我有以下 DBAdapter(这不是全部,但它是相关代码)。 private final String DATABASE_NAME = "seller"; private final String D
知道如何更新使用 openorcreatedatabase 创建的 sqlite 数据库。问题是该应用程序已经在市场上发布。新版本的应用程序向数据库添加了字段。 我试过这个方法 package com
我正在尝试访问数组适配器内的数据库以从列表中删除项目。但代码无法解析 openOrCreateDatabase 方法或符号 MODE_PRIVATE。 我的代码: public class worko
我创建了一个带有服务的程序 - 该服务是“START_STICKY”。因此,当我关闭程序(我正在使用 Advanced Task Killer 来终止程序)时,服务会自动重新启动,但这会出现问题,因为
当我打电话 myDB = this.openOrCreateDatabase("DatabaseName", MODE_PRIVATE, null); 数据库文件是在哪里创建的? 我到处都找不到。 o
Android 在两个不同的类中有 openOrCreateDatabase:SQLiteDatabase和 Context .请问它们有什么区别? 与此同时,我正在使用单例类来维护我的数据库。如果我
我正在尝试按如下方式打开数据库: SQLiteDatabase myDatabase; myDatabase = openOrCreateDatabase("sudoku.db", Context.M
我正在制作一个使用数据库的新 Android 应用程序。我使用类似的代码来创建和复制数据库,但由于某种原因它不起作用。想不通,求助日志猫: 07-03 21:38:54.260: E/AndroidR
我正在尝试学习 sqlite for android。我创建了一个 Helper 类,它应该打开我的数据库并执行任何帮助类所做的事情。 我的问题是由于这个错误我什至无法打开数据库: android.d
我收到此日志警告消息(在运行 stock 4.4 的 Nexus 4 上): Failed to chmod(/storage/emulated/0/Android/data/com.myapp/my
我是一名优秀的程序员,十分优秀!