IntentService - startService 上的 NullPointerExecption
IntentService - NullPointerExecption on startService
我正在尝试使用 Android 提供的 IntentService
功能 尝试 运行 在后台进行一些计算 。
我从昨天开始就一直在研究这个问题,但我似乎找不到任何有效的解决方案。
我已经查看了很多关于 IntentService 的 SO 问题并尝试应用建议的修复,但我的似乎无法工作。
我尝试从我调用函数的 Activity 传递各种不同的 context
/ Activies / getApplicationContext()
/ this
/ getBaseContext()
但我仍然收到 空对象引用 错误
"Attempt to invoke virtual method 'android.content.ComponentName
android.content.Context.startService(android.content.Intent)' on a
null object reference"
应用程序在调用 startService()
的函数的第 3 行崩溃(请参阅下面的代码)
//This function is from MyCurrentClass.class - it is a Singleton and its being called from another activity where it passes in its context
public void notify (Context context, JSONObject responseFromDb){
Intent inputIntent = new Intent(context, MyCurrentClass.class);
inputIntent.putExtra("responseFromDB", responseFromDb.toString());
this.startService(inputIntent); //crashes here!
}
P.S.: 我看过的大多数解决方案似乎只有 1 Activity,但我的应用程序在不同的 Activity 之间切换。
(不确定这是否重要)但最重要的是 我正在处理的 class 是一个普通的 Java class,它扩展了 IntentService 而不是 Activity class.
我还在我的 Android 清单中将服务声明为 link 到 MyCurrentClass 并尝试 Activity 中的 bindService()
:它被调用了,但它没有也工作
以下是我查看并尝试但失败的一些questions/solutions:
- How to get Context in an Intent Service
其实我也看了很多其他帖子,但是实在是太多了。
希望我提供的信息足够了。如果不是,请让我知道可能缺少什么,我会用所需信息更新问题。
使用 context
您在 activity 收到的评论中提到的内容,因为在这种情况下,您当前的 class 没有上下文。read for further details
context.startService(inputIntent);
而不是
this.startService(inputIntent);
我正在尝试使用 Android 提供的 IntentService
功能 尝试 运行 在后台进行一些计算 。
我从昨天开始就一直在研究这个问题,但我似乎找不到任何有效的解决方案。
我已经查看了很多关于 IntentService 的 SO 问题并尝试应用建议的修复,但我的似乎无法工作。
我尝试从我调用函数的 Activity 传递各种不同的 context
/ Activies / getApplicationContext()
/ this
/ getBaseContext()
但我仍然收到 空对象引用 错误
"Attempt to invoke virtual method 'android.content.ComponentName android.content.Context.startService(android.content.Intent)' on a null object reference"
应用程序在调用 startService()
的函数的第 3 行崩溃(请参阅下面的代码)
//This function is from MyCurrentClass.class - it is a Singleton and its being called from another activity where it passes in its context
public void notify (Context context, JSONObject responseFromDb){
Intent inputIntent = new Intent(context, MyCurrentClass.class);
inputIntent.putExtra("responseFromDB", responseFromDb.toString());
this.startService(inputIntent); //crashes here!
}
P.S.: 我看过的大多数解决方案似乎只有 1 Activity,但我的应用程序在不同的 Activity 之间切换。 (不确定这是否重要)但最重要的是 我正在处理的 class 是一个普通的 Java class,它扩展了 IntentService 而不是 Activity class.
我还在我的 Android 清单中将服务声明为 link 到 MyCurrentClass 并尝试 Activity 中的 bindService()
:它被调用了,但它没有也工作
以下是我查看并尝试但失败的一些questions/solutions:
- How to get Context in an Intent Service
其实我也看了很多其他帖子,但是实在是太多了。
希望我提供的信息足够了。如果不是,请让我知道可能缺少什么,我会用所需信息更新问题。
使用 context
您在 activity 收到的评论中提到的内容,因为在这种情况下,您当前的 class 没有上下文。read for further details
context.startService(inputIntent);
而不是
this.startService(inputIntent);