gpt4 book ai didi

android - 访问服务的变量

转载 作者:行者123 更新时间:2023-11-29 15:41:55 24 4
gpt4 key购买 nike

我有一个名为 Main 的 Android Activity,它调用一个名为 MainService 的服务,如下所示:

Intent intent = new Intent(this, MainService.class);
if(MainService.getInstance() == null){
Log.d(TAG, "Calling MainService");
startService(intent);
}

MainService 在其生命周期内维护一个变量,我希望稍后在 Main 中访问该变量。我该怎么做?

谢谢。

最佳答案

您可以绑定(bind)服务并永久拥有服务实例。下面的示例代码将帮助您:-
服务等级

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 中需要的任何地方使用服务。希望对您有所帮助。

关于android - 访问服务的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38892547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com