Android Service Not Starting From Activity

13,504

The name in <service android:enabled="true" android:name="com.example.myapp.MYRESULTSSERVICE" /> must match EXACTLY as your class. Try not using all caps.

Share:
13,504
androidn00b
Author by

androidn00b

Updated on June 05, 2022

Comments

  • androidn00b
    androidn00b almost 2 years

    I'm new here and I have a question on android services. For some reason my service is not starting. And not giving any errors in the logcat. I used

    startService(new Intent(getApplicationContext(),MyResultsService.class));
    

    to call the service (MyResultsService.class) in the main activity.

    Also, This is MyResultsService.class:

    package com.example.myapp;
    
    import android.app.Service;
    import android.content.Intent;
    import android.os.IBinder;
    import android.util.Log;
    
    public class MyResultsService extends Service{
        public UpdateMyResults updater;
        public boolean stopThread = false;
    
        @Override
        public void onCreate() {
            // TODO Auto-generated method stub
            super.onCreate();
            Log.d(getPackageName(), "Created MyResultsService");
        }
    
        @Override
        public synchronized int onStartCommand(Intent intent, int flags, int startId) {
            // TODO Auto-generated method stub
            Log.d(getPackageName(), "Starting...");
            if (!updater.isAlive()){
                updater = new UpdateMyResults();
                Log.d(getPackageName(), "New updater thread...");
            }
            return super.onStartCommand(intent, flags, startId);
        }
    
        @Override
        public synchronized void onDestroy() {
            // TODO Auto-generated method stub
            stopThread = true;
            Log.d(getPackageName(), "Destroying MyResultsService");
            try {
                updater.join();
                Log.d(getPackageName(), "Closed updater thread");
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            super.onDestroy();
    
        }
    
        @Override
        public IBinder onBind(Intent intent) {
            // TODO Auto-generated method stub
            return null;
        }
    
        private class UpdateMyResults extends Thread{
    
            static final long DELAY = 30000;
            @Override
            public void run() {
                while (!stopThread){
                    try {
                        //Do stuff and pause
                        Log.d(getName(), "Running");
                        Thread.sleep(DELAY);
                    } catch (InterruptedException e) {
                        // Interrupt
                        e.printStackTrace();
                    }
                }//end while
            }//end run
        }//end UpdateMyResults
    }
    

    my xml manifest:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.myapp"
        android:versionCode="1"
        android:versionName="1.0">
    
        <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17" />
    
        <application
            android:label="MyApp"
            android:icon="@drawable/ic_launcher"
            android:theme="@android:style/Theme.Holo.Light">
    
            <activity
                android:name=".MainActivity"
                android:label="My App">
                <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="com.example.myapp.MYRESULTSSERVICE" />
    
        </application>
    
    </manifest>
    

    Any help would be greatly appreciated, Thanks!

  • androidn00b
    androidn00b almost 11 years
    07-15 15:27:07.278: E/AndroidRuntime(8979): java.lang.RuntimeException: Unable to start service com.example.myapp.MyResultsService@40ecbab0 with Intent { cmp=com.example.myapp/.MyResultsService }: java.lang.NullPointerException I now get this error
  • Alex Fu
    Alex Fu almost 11 years
    Can you paste the FULL stacktrace into pastebin.com, or something similar and post the link.
  • Alex Fu
    Alex Fu almost 11 years
    Line 23, you are calling a method on a variable (updater) that has not been initialized yet, causing a NPE.
  • androidn00b
    androidn00b almost 11 years
    Wow, I would have never found that. Thanks for the help, I really appreciate it!