KKK

2024-04-18  本文已影响0人  吴云龙_1ea8

好的,下面是一个稍微复杂一点的示例,它包括一个服务类和一个绑定服务的活动类。服务类中实现了一个简单的计数器功能,活动类可以通过绑定服务来获取计数器的当前值并对其进行操作。

**服务类(CounterService.java):**

```java

import android.app.Service;

import android.content.Intent;

import android.os.Binder;

import android.os.IBinder;

public class CounterService extends Service {

    private final IBinder binder = new CounterBinder();

    private int counter = 0;

    public class CounterBinder extends Binder {

        CounterService getService() {

            return CounterService.this;

        }

    }

    @Override

    public IBinder onBind(Intent intent) {

        return binder;

    }

    public int getCounter() {

        return counter;

    }

    public void incrementCounter() {

        counter++;

    }

    public void decrementCounter() {

        counter--;

    }

}

```

**活动类(MainActivity.java):**

```java

import android.content.ComponentName;

import android.content.Context;

import android.content.Intent;

import android.content.ServiceConnection;

import android.os.Bundle;

import android.os.IBinder;

import android.view.View;

import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    private CounterService counterService;

    private boolean isServiceBound = false;

    private ServiceConnection serviceConnection = new ServiceConnection() {

        @Override

        public void onServiceConnected(ComponentName name, IBinder service) {

            CounterService.CounterBinder binder = (CounterService.CounterBinder) service;

            counterService = binder.getService();

            isServiceBound = true;

        }

        @Override

        public void onServiceDisconnected(ComponentName name) {

            isServiceBound = false;

        }

    };

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

    @Override

    protected void onStart() {

        super.onStart();

        Intent intent = new Intent(this, CounterService.class);

        bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);

    }

    @Override

    protected void onStop() {

        super.onStop();

        if (isServiceBound) {

            unbindService(serviceConnection);

            isServiceBound = false;

        }

    }

    public void onIncrementClicked(View view) {

        if (isServiceBound) {

            counterService.incrementCounter();

            updateCounterDisplay();

        }

    }

    public void onDecrementClicked(View view) {

        if (isServiceBound) {

            counterService.decrementCounter();

            updateCounterDisplay();

        }

    }

    private void updateCounterDisplay() {

        TextView counterTextView = findViewById(R.id.counter_text_view);

        counterTextView.setText(String.valueOf(counterService.getCounter()));

    }

}

```

在这个示例中,服务类(CounterService)实现了一个简单的计数器功能,并提供了绑定服务所需的 Binder 类。活动类(MainActivity)绑定了服务并实现了增加和减少计数器值的方法,并在界面上显示当前的计数器值。

上一篇 下一篇

猜你喜欢

热点阅读