Search code examples
androidandroid-activityserviceandroid-context

startService from class that does not extend Activity


I have created a class that extends IntentService, and I would like to start the service from a class that is not an Activity, therefore, I do not have access to a Context object. I could not find an example of this in the documentation or the web. Is it possible ?


Solution

  • You will need to pass current Activity context to non Activity class for starting service from non-activity class as:

    public class NonActivity {
      public Context context;
    
      public NonActivity(Context context){
        this.context=context;
      }
    
      public void startServicefromNonActivity(){
         Intent intent=new Intent(context,yourIntentService.class);
         context.startService(intent);
      }
    }
    

    and pass current context as:

    public class AppActivity extends Activity {
        NonActivity nonactiityobj;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
                     nonactiityobj=new NonActivity(CuttentActivity.this);
                     //start service here
                     nonactiityobj.startServicefromNonActivity();
        }
    }