我有一项服务。在服务中,我会在课堂上调用一个函数。该功能可以打开一个Intent 我的服务是如何从服务中的类中调用意图
public class service extends Service
{
private static final String TAG = "MyService";
@Override
public void onCreate() {
super.onCreate();
Log.d(TAG, "onCreate");
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
public void onDestroy() {
Log.d(TAG, "onDestroy");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
return START_STICKY;
}
}
而且我的课是
public class classIntent extends Application{
public void homeIntent()
{
Intent intent1 = new Intent(Intent.ACTION_MAIN);
intent1.addCategory(Intent.CATEGORY_HOME);
intent1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent1.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent1);
}
在服务上,我会打电话给homeIntent()
功能如下步骤:
在OnCreate()的服务,我会用
private classIntent cIntent;
@Override
public void onCreate() {
cIntent=new classIntent();
...}
然后在onStartCommand()
功能,我用
cIntent.homeIntent();
然而,我得到了错误,例如:
所致:显示java.lang.NullPointerException:尝试调用虚拟方法“无效android.content.Context .startActivity(android.content.Intent)'上的空对象引用
我该如何解决它?当我的课程classIntent
从应用程序扩展时,我该做对吗?我想在课堂上使用一些功能,例如:getApplicationContext()
...如果不正确,我需要扩展哪个类?我在后台运行应用程序。感谢所有
我的清单是
<application android:label="@string/app_name"
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<service android:enabled="true" android:name=".service" />
<activity android:enabled="true" android:name=".classIntent" />
</application>
感谢Gohan。所以,我的班级名称不会从任何班级延伸。这样对吗?只需使用'public class classInten {}' – Jame
你不需要'classInten'。只是一个静态方法startXXXActivity(context)将完成这项工作。 – Gohan
我使用这个类来使我的代码更清晰。因为所有放入一项服务的功能都会使服务中的代码过长。因此,我将调用意图分解为另一个类classIntent() – Jame