访问服务的变量

时间:2016-08-11 09:35:02

标签: android android-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中访问的变量。我该怎么做?

感谢。

2 个答案:

答案 0 :(得分:3)

您可以绑定服务,并可以永久拥有服务实例。以下示例代码将帮助您: -
服务类

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

活动

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

}

然后,您可以在活动中的任何位置使用service。希望它有所帮助。

答案 1 :(得分:1)

是的,您可以访问服务中的变量,但为此您必须首先绑定到此服务。之后,使用访问器来获取或设置变量或调用服务的任何其他方法。 见https://developer.android.com/guide/components/bound-services.html