KKK

作者: 吴云龙_1ea8 | 来源:发表于2024-04-18 22:09 被阅读0次

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

    **服务类(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)绑定了服务并实现了增加和减少计数器值的方法,并在界面上显示当前的计数器值。

    相关文章

      网友评论

          本文标题:KKK

          本文链接:https://www.haomeiwen.com/subject/ojuyxjtx.html