StartService из класса, который не расширяет Activity

Я создал класс, который расширяет IntentService, и я хотел бы запустить службу из класса, который не является Activity, поэтому у меня нет доступа к объекту Context. Я не мог найти пример этого в документации или в Интернете. Возможно ли это?

Ответы

Ответ 1

Вам нужно будет передать текущий контекст активности в класс non Activity для запуска службы из класса неактивности следующим образом:

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);
}

и передать текущий контекст как:

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();
           }

}

Ответ 2

Используйте этот код. Начать и остановить службу.

public class MyService {

Context context ;

public MyService(Context cont) {
    this.context = context ;
}

public void StartMyService()
{
    Intent i = new Intent(context,YourService.class);
    context.startService(i);
}
public void StopMyService()
{
    Intent i = new Intent(context,YourService.class);
    context.stopService(i);
}
}

Это просто создает объект этого класса

  MyService mySevice ;
  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  myService = new MyService(this);
  //For Startting Service
  myService.StartMyService();

  //For Stopping Service
  myService.StopMyService();
}