2012-12-14 4 views
15

Ich habe eine Klasse erstellt, die IntentService erweitert, und ich möchte den Dienst von einer Klasse starten, die keine Aktivität ist, daher habe ich keinen Zugriff auf ein Kontextobjekt. Ich konnte kein Beispiel dafür in der Dokumentation oder im Internet finden. Ist es möglich ?startService von Klasse, die nicht erweitert Aktivität

Antwort

19

Sie müssen für den Dienst aus Nicht-Aktivitätsklasse aktuellen Aktivität Kontext nicht Aktivitätsklasse passieren beginnen als:

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

und aktuellen Kontext als übergeben:

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

} 
+1

Ich bekomme die Idee, danke! –

+0

@AlexCartwright: herzlich willkommen !!! :) –

2

Verwenden Sie diesen Code starten und Stop Service

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

Das schaffen nur Objekt dieser Klasse

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