我正在尝试使用Android提供的IntentService
功能尝试在后台运行一些计算。
我从昨天起就开始研究这个问题,但我似乎无法找到任何有效的解决方案 我已经查看了很多关于IntentService的SO问题,并尝试应用建议的修复程序,但我似乎无法工作。
我尝试从我调用该函数的Activity调用各种不同的context
/ Activies / getApplicationContext()
/ this
/ getBaseContext()
,但我仍然 null对象引用错误
“尝试调用虚方法'android.content.ComponentName android.content.Context.startService(android.content.Intent)'上一个 null对象引用“
应用程序在调用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个活动,但我的应用程序在不同的活动之间切换。 (不确定这是否重要)但最重要的是我正在研究的类是一个普通的Java类,它扩展了IntentService而不是Activity类。
我还在我的Android清单中声明了该服务链接到MyCurrentClass并尝试了来自Activity的bindService()
:它被调用了,但它也没有用。
以下是我看过并试过但未通过的一些问题/解决方案:
我实际上看了很多其他帖子,但有太多了。
希望我提供的信息足够了。如果不是,请告诉我可能缺少的内容,我将使用所需信息更新问题。
答案 0 :(得分:2)
使用您在活动中收到的评论中提到的Bs = set(B) # 'in' operator is faster for sets
result = []
for n1 in A: # Iterate through first set
for n2 in g.adj[n1]: # Than through edges connected to a node
if n2 in Bs: # Check is it edge between A and B
result.append(n1, n2)
,因为在这种情况下,您当前的课程没有上下文。read for further details
context
而不是
context.startService(inputIntent);