intentservice没有空构造函数,但是有一个构造函数

我在Activity中有一个IntentService,当我尝试调用该服务时,它会抛出此错误,我发现这很奇怪,因为如果我声明了空构造函数。

错误:

06-17 15:48:34.603: E/AndroidRuntime(13363): FATAL EXCEPTION: main 06-17 15:48:34.603: E/AndroidRuntime(13363): java.lang.RuntimeException: Unable to instantiate service cl.prosys.rac.activity.HomeActivity$UploadService: java.lang.InstantiationException: can't instantiate class cl.prosys.rac.activity.HomeActivity$UploadService; no empty constructor 06-17 15:48:34.603: E/AndroidRuntime(13363): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2380) 06-17 15:48:34.603: E/AndroidRuntime(13363): at android.app.ActivityThread.access$1700(ActivityThread.java:134) 06-17 15:48:34.603: E/AndroidRuntime(13363): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1306) 06-17 15:48:34.603: E/AndroidRuntime(13363): at android.os.Handler.dispatchMessage(Handler.java:99) 06-17 15:48:34.603: E/AndroidRuntime(13363): at android.os.Looper.loop(Looper.java:137) 06-17 15:48:34.603: E/AndroidRuntime(13363): at android.app.ActivityThread.main(ActivityThread.java:4867) 06-17 15:48:34.603: E/AndroidRuntime(13363): at java.lang.reflect.Method.invokeNative(Native Method) 06-17 15:48:34.603: E/AndroidRuntime(13363): at java.lang.reflect.Method.invoke(Method.java:511) 06-17 15:48:34.603: E/AndroidRuntime(13363): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007) 06-17 15:48:34.603: E/AndroidRuntime(13363): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774) 06-17 15:48:34.603: E/AndroidRuntime(13363): at dalvik.system.NativeStart.main(Native Method) 06-17 15:48:34.603: E/AndroidRuntime(13363): Caused by: java.lang.InstantiationException: can't instantiate class cl.prosys.rac.activity.HomeActivity$UploadService; no empty constructor 06-17 15:48:34.603: E/AndroidRuntime(13363): at java.lang.Class.newInstanceImpl(Native Method) 06-17 15:48:34.603: E/AndroidRuntime(13363): at java.lang.Class.newInstance(Class.java:1319) 06-17 15:48:34.603: E/AndroidRuntime(13363): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2377) 06-17 15:48:34.603: E/AndroidRuntime(13363): ... 10 more 

AndroidManifest.xml中

  ...   

活动:

 package cl.prosys.rac.activity; import java.io.File; import java.util.ArrayList; import java.util.Map; import org.json.JSONArray; import org.json.JSONObject; import android.app.IntentService; import android.content.Intent; import android.content.IntentFilter; import android.database.Cursor; import android.os.Bundle; import android.os.Environment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; import cl.prosys.rac.R; import cl.prosys.rac.broadcast.UploadBroadcastReceiver; import cl.prosys.rac.config.AppConfig; import cl.prosys.rac.config.DataKey; import cl.prosys.rac.db.DataBase; import cl.prosys.rac.db.DataBaseFactory; import cl.prosys.rac.db.DataBasePrm; import cl.prosys.rac.holder.HomeItemMenuHolder; import cl.prosys.rac.net.Request; public class HomeActivity extends AppActivity { ... public void onListItemClick(int position) { Intent intent; switch (position) { case 3: // Subir intent = new Intent(this, UploadService.class); startService(intent); break; } } public class UploadService extends IntentService { public UploadService() { super("UploadService"); } @Override protected void onHandleIntent(Intent intent) { ... } } } 

 public class UploadService extends IntentService { 

您的Service是一个内部阶级。 如果要将其保留在Activity ,请将其更改为static:

 public static class UploadService extends IntentService { 

您可能想要了解不同类型的嵌套类。 来自谷歌的第一个链接: http : //docs.oracle.com/javase/tutorial/java/javaOO/nested.html