安卓 - 在活动(Activity)和后台服务(Background Service)之间进行通信的最佳方式
创始人
2024-09-01 15:01:00
0

在安卓中,可以使用广播(Broadcast)和绑定服务(Bound Service)来实现活动和后台服务之间的通信。下面是使用广播和绑定服务的代码示例:

  1. 使用广播实现通信: 在活动中发送广播:
Intent intent = new Intent("com.example.MY_ACTION");
intent.putExtra("message", "Hello from Activity");
sendBroadcast(intent);

在后台服务中注册广播接收器:

private BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String message = intent.getStringExtra("message");
        // 处理接收到的消息
    }
};

@Override
public void onCreate() {
    super.onCreate();
    IntentFilter filter = new IntentFilter("com.example.MY_ACTION");
    registerReceiver(receiver, filter);
}

@Override
public void onDestroy() {
    super.onDestroy();
    unregisterReceiver(receiver);
}
  1. 使用绑定服务实现通信: 在活动中绑定服务:
private MyService myService;
private boolean isBound = false;

private ServiceConnection serviceConnection = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
        MyService.MyBinder binder = (MyService.MyBinder) iBinder;
        myService = binder.getService();
        isBound = true;
    }

    @Override
    public void onServiceDisconnected(ComponentName componentName) {
        isBound = false;
    }
};

@Override
protected void onStart() {
    super.onStart();
    Intent intent = new Intent(this, MyService.class);
    bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
}

@Override
protected void onStop() {
    super.onStop();
    if (isBound) {
        unbindService(serviceConnection);
        isBound = false;
    }
}

在后台服务中创建绑定服务:

public class MyService extends Service {
    private final IBinder binder = new MyBinder();

    public class MyBinder extends Binder {
        MyService getService() {
            return MyService.this;
        }
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return binder;
    }

    // 在后台服务中定义方法供活动调用
    public void sendMessage(String message) {
        // 处理接收到的消息
    }
}

在活动中调用后台服务的方法:

if (isBound) {
    myService.sendMessage("Hello from Activity");
}

相关内容

热门资讯

黑科技神器(wepokE)有透... 自定义系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,不管你是想分享给你好...
黑科技最新(wepOkE)ai... 黑科技最新(wepOkE)ai辅助(黑科技)ai辅助(竟然是真的有挂)1、金币登录送、破产送、升级送...
透视苹果版(WPK)德州ai辅... 透视苹果版(WPK)德州ai辅助神器(黑科技)可以提高胜率(本来存在有挂)是一款可以让一直输的玩家,...
黑科技最新(德州wepower... 您好,这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在这款游戏中打牌都...
科普辅助(微扑克)辅助软件(辅... 科普辅助(微扑克)辅助软件(辅助挂)的辅助工具苹果(真是真的是有挂);科普辅助(微扑克)辅助软件(辅...
玩家辅助(微扑克)辅助(辅助挂... 玩家辅助(微扑克)辅助(辅助挂)辅助器免费版(确实真的是有挂)1)辅助挂:进一步探索辅助透视大陆,与...
大神辅助(微扑克)系统发牌逻辑... 大神辅助(微扑克)系统发牌逻辑(辅助挂)系统发牌逻辑(真是是真的有挂)1、很好的工具软件,可以解锁游...
黑科技免费(wePOke)软件... 黑科技免费(wePOke)软件(黑科技)软件(本来有挂)1)辅助挂:进一步探索辅助透视大陆,与熟悉的...
黑科技辅助(微扑克)辅助插件挂... 黑科技辅助(微扑克)辅助插件挂(辅助挂)辅助手机(一贯真的是有挂)辅助器中分为三种模型:软件透明挂、...
科普辅助(微扑克)ai胜率(辅... 科普辅助(微扑克)ai胜率(辅助挂)ai代打(切实存在有挂);科普辅助(微扑克)ai胜率(辅助挂)a...