Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android RuntimeException: Unable to instantiate the service

I want to create a service which will run on a separate thread (not on UI Thread), so I implemented a class which will extend IntentService. But I haven't got any luck. Here is the code.

public class MyService extends IntentService {

    public MyService(String name) {
        super(name);
        // TODO Auto-generated constructor stub
    }

    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        Log.e("Service Example", "Service Started.. ");
        // pushBackground();

    }

    @Override
    public void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        Log.e("Service Example", "Service Destroyed.. ");
    }

    @Override
    protected void onHandleIntent(Intent arg0) {
        // TODO Auto-generated method stub
        for (long i = 0; i <= 1000000; i++) {
            Log.e("Service Example", " " + i);
            try {
                Thread.sleep(700);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

Service Consumption in an Activity Button click:

public void onclick(View view) {
Intent svc = new Intent(this, MyService.class);
    startService(svc);
}
like image 876
ram Avatar asked Feb 17 '11 09:02

ram


3 Answers

In your concrete implementation you have to declare a default constructor which calls the public IntentService (String name) super constructor of the abstract IntentService class you extend:

public MyService () {   super("MyServerOrWhatever"); } 

You do not need to overwrite onStartCommand if the super implementation fits for you (what I expect).

In your current case you should get an exception (Unable to instantiate service...) - it is always worth to put this in the question.

like image 134
FrVaBe Avatar answered Sep 22 '22 15:09

FrVaBe


Not the case here but this might help someone: Check that your service class is not abstract. I had this problem because I had copied IntentService implementation from SDK and modified it to better suit my needs.

like image 27
Juuso Ohtonen Avatar answered Sep 22 '22 15:09

Juuso Ohtonen


I resolved the "Unable to instantiate the service" issue, by adding the default parameterless constructor.

like image 45
Mohsen Afshin Avatar answered Sep 25 '22 15:09

Mohsen Afshin