访问服务的变量
Accessing a variable of a Service
我有一个名为 Main 的 Android Activity,它调用名为 MainService 的服务,如下所示:
Intent intent = new Intent(this, MainService.class);
if(MainService.getInstance() == null){
Log.d(TAG, "Calling MainService");
startService(intent);
}
MainService 在其生命周期内维护一个变量,我希望稍后在 Main 中访问该变量。我该怎么做?
谢谢。
是的,您可以访问服务内部的变量,但为此您必须先绑定到该服务。之后,使用访问器获取或设置变量或调用服务的任何其他方法。
参见 https://developer.android.com/guide/components/bound-services.html
您可以绑定服务并永久拥有服务实例。下面的示例代码将帮助您:-
服务 Class
public class MusicService extends Service {
MyBinder binder=new MyBinder();
MusicService services;
static Context context;
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return binder;
}
@Override
public void onCreate() {
super.onCreate();
context=getApplicationContext();
MediaPlayer mPlayer = MediaPlayer.create(getApplicationContext(), R.raw.yaar);
mPlayer.start();
}
public class MyBinder extends Binder
{
public MusicService getServiceSystem()
{
return MusicService.this;
}
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
Activity
public class MainActivity extends AppCompatActivity {
MusicService services;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ServiceConnection connection=new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
MusicService.MyBinder binderr=(MusicService.MyBinder)service;
services=binderr.getServiceSystem();
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
};
Intent intent= new Intent(this, MusicService.class);
startService(intent);
}
}
然后您可以在 activity 中任何需要的地方使用 service
。希望对你有帮助。
我有一个名为 Main 的 Android Activity,它调用名为 MainService 的服务,如下所示:
Intent intent = new Intent(this, MainService.class);
if(MainService.getInstance() == null){
Log.d(TAG, "Calling MainService");
startService(intent);
}
MainService 在其生命周期内维护一个变量,我希望稍后在 Main 中访问该变量。我该怎么做?
谢谢。
是的,您可以访问服务内部的变量,但为此您必须先绑定到该服务。之后,使用访问器获取或设置变量或调用服务的任何其他方法。 参见 https://developer.android.com/guide/components/bound-services.html
您可以绑定服务并永久拥有服务实例。下面的示例代码将帮助您:-
服务 Class
public class MusicService extends Service {
MyBinder binder=new MyBinder();
MusicService services;
static Context context;
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return binder;
}
@Override
public void onCreate() {
super.onCreate();
context=getApplicationContext();
MediaPlayer mPlayer = MediaPlayer.create(getApplicationContext(), R.raw.yaar);
mPlayer.start();
}
public class MyBinder extends Binder
{
public MusicService getServiceSystem()
{
return MusicService.this;
}
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
Activity
public class MainActivity extends AppCompatActivity {
MusicService services;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ServiceConnection connection=new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
MusicService.MyBinder binderr=(MusicService.MyBinder)service;
services=binderr.getServiceSystem();
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
};
Intent intent= new Intent(this, MusicService.class);
startService(intent);
}
}
然后您可以在 activity 中任何需要的地方使用 service
。希望对你有帮助。