Я создал программу с сервисом - услуга «START_STICKY». Поэтому, когда я закрываю программу (я использую Advanced Task Killer, чтобы убить программы) перезапуск службы автоматически, но это представляет собой проблему, потому что я получаю сообщение об ошибке при попытке вызова:Android SQLite ContextWrapper.openOrCreateDatabase() nullpointer?
ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203) (see stacktrace below).
Я создал класс для обработки контекста, который вернет контекст моей активности, если он не является нулевым, или поддельный, который я создал, если контекст активности имеет значение null - и контекст активности имеет значение null, поэтому используется поддельный, я подозреваю, что это может быть проблемой , но понятия не имею. В моей деятельности у меня есть конструктор, который дает ссылку на него сам по классу contexthandling
, но, похоже, действие не создается (не раньше, чем служба запускается как минимум), когда система перезапускает мою службу.
Существует, конечно, проблема, когда программа запускается нормально, сервис начинается нормально; поэтому я заподозрить поддельный контекст, я создал ее следующим образом (и это упоминается в манифесте приложения тег с android:name=FakeContext
):
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;
}
}
StackTrace:
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, поэтому, пожалуйста, напишите его.
Почему у вас есть поддельный контекст? – apps
привет, мне нужно было кормить sqlliteopenhelper контекстом. как это: частный статический класс OpenHelper расширяет SQLiteOpenHelper \t { \t \t общественного OpenHelper (контекст Context) \t \t {\t \t \t \t \t \t \t \t супер (контекст, DATABASE_NAME, нуль, DATABASE_VERSION); \t \t} ..snip .. – SimonDK
http://stackoverflow.com/questions/4177731/android-how-to-call-method-from-another-class-without-passing-context/4177776#4177776 – apps