在开启和停止服务时,发现startService方法能正常开启一个服务,在模拟器中也可看到这个服务,但是当我调用stopService方法时,抛出了空指针异常。
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
button_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(),"Activity Created",Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getActivity(),HelloService.class);
getActivity().startService(intent);
}
});
button_stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(),"Activity Stopped",Toast.LENGTH_SHORT).show(); Intent intent2 = new Intent(getActivity(),HelloService.class);
getActivity().stopService(intent2);
Log.d("feng","service stopped");
}
});
}E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.fragment, PID: 5073
java.lang.RuntimeException: Unable to stop service com.example.fragment.HelloService@2a706651: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.os.Looper.quit()' on a null object reference
at android.app.ActivityThread.handleStopService(ActivityThread.java:2911)
at android.app.ActivityThread.access$2200(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1381)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.os.Looper.quit()' on a null object reference
at android.app.IntentService.onDestroy(IntentService.java:136)
at android.app.ActivityThread.handleStopService(ActivityThread.java:2894)
at android.app.ActivityThread.access$2200(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1381)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Application terminated.
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
button_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(),"Activity Created",Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getActivity(),HelloService.class);
getActivity().startService(intent);
}
});
button_stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(),"Activity Stopped",Toast.LENGTH_SHORT).show(); Intent intent2 = new Intent(getActivity(),HelloService.class);
getActivity().stopService(intent2);
Log.d("feng","service stopped");
}
});
}E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.fragment, PID: 5073
java.lang.RuntimeException: Unable to stop service com.example.fragment.HelloService@2a706651: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.os.Looper.quit()' on a null object reference
at android.app.ActivityThread.handleStopService(ActivityThread.java:2911)
at android.app.ActivityThread.access$2200(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1381)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.os.Looper.quit()' on a null object reference
at android.app.IntentService.onDestroy(IntentService.java:136)
at android.app.ActivityThread.handleStopService(ActivityThread.java:2894)
at android.app.ActivityThread.access$2200(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1381)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Application terminated.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货