如何将数据从 not-main activity 传递到线程
how to pass data from not-main activity to thread
我创建了对象bluetooth-service,这里创建了线程,用于监控队列中的数据。从 main-activity 创建了一个 activity,我可以在其中设置数据。我如何将数据从此 activity 传递到线程以发送消息,而不传递对象蓝牙服务?
您是否考虑过使用静态 class 来保存您需要发送的消息,然后可能使用 Observer pattern(如果需要)来通知线程它有新消息要发送发送
我用https://github.com/greenrobot/EventBus for that. This will simplify the code. All you need to do is here。在您的情况下,您需要:
添加gradle依赖
compile 'de.greenrobot:eventbus:2.4.0'
创建活动class:
public class MessageEvent {
public final String message;
public YourObject object;//use what you need here to pass data.
public MessageEvent(String message) {
this.message = message;
...
}
}
创建订阅者:
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
// This method will be called when a MessageEvent is posted
public void onEvent(MessageEvent event){
Toast.makeText(context, event.message, Toast.LENGTH_SHORT).show();
}
// This method will be called when a SomeOtherEvent is posted
public void onEvent(SomeOtherEvent event){
doSomethingWith(event);
}
最后 post 你的数据:
EventBus.getDefault().post(new MessageEvent("Hello everyone!"));
如果有帮助请告诉我。
我创建了对象bluetooth-service,这里创建了线程,用于监控队列中的数据。从 main-activity 创建了一个 activity,我可以在其中设置数据。我如何将数据从此 activity 传递到线程以发送消息,而不传递对象蓝牙服务?
您是否考虑过使用静态 class 来保存您需要发送的消息,然后可能使用 Observer pattern(如果需要)来通知线程它有新消息要发送发送
我用https://github.com/greenrobot/EventBus for that. This will simplify the code. All you need to do is here。在您的情况下,您需要:
添加gradle依赖
compile 'de.greenrobot:eventbus:2.4.0'
创建活动class:
public class MessageEvent { public final String message; public YourObject object;//use what you need here to pass data. public MessageEvent(String message) { this.message = message; ... } }
创建订阅者:
@Override public void onStart() { super.onStart(); EventBus.getDefault().register(this); } @Override public void onStop() { EventBus.getDefault().unregister(this); super.onStop(); } // This method will be called when a MessageEvent is posted public void onEvent(MessageEvent event){ Toast.makeText(context, event.message, Toast.LENGTH_SHORT).show(); } // This method will be called when a SomeOtherEvent is posted public void onEvent(SomeOtherEvent event){ doSomethingWith(event); }
最后 post 你的数据:
EventBus.getDefault().post(new MessageEvent("Hello everyone!"));
如果有帮助请告诉我。