2013-06-17 1 views
3

Activity 내에 IntentService가 있습니다. 서비스를 호출하려고하면이 오류가 발생합니다.이 생성자는 선언 된 빈 생성자를 가지고 있기 때문에 이상합니다.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

<application> 
    ... 
    <service android:name=".activity.HomeActivity$UploadService"></service> 
</application> 

활동 :

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) { 
      ... 
     } 

    } 
} 
+0

HomeActivity 클래스 내에 UploadService가 있습니까? – kosa

+0

예, 제한 사항이 있습니까? – toledorobia

+0

잘 모르겠지만 클래스를 분리하여 시도해 보겠습니다. – kosa

답변

13
public class UploadService extends IntentService { 

귀하의 Service는 내부 클래스입니다. 당신이 Activity 내부를 유지하려면 정적으로 변경 :

public static class UploadService extends IntentService { 

당신은 중첩 된 클래스에 대한 다른 유형을 읽을 수 있습니다. google에서 첫 번째 링크 : http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

관련 문제