- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我在 StackOverflow 上四处寻找,但没有找到答案,所以我想知道是否缺少某些东西。我在我的应用程序的“磨损”部分中有一个 Activity ,其包和应用程序名称与我的移动部分相同,但在发送消息时它没有被触发:
public class MainActivity extends Activity implements MessageApi.MessageListener, GoogleApiClient.ConnectionCallbacks {
private GoogleApiClient mApiClient;
private ArrayAdapter<String> mAdapter;
private ListView mListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView) findViewById(R.id.list);
mAdapter = new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1 );
mListView.setAdapter( mAdapter );
initGoogleApiClient();
}
private void initGoogleApiClient() {
mApiClient = new GoogleApiClient.Builder( this )
.addApi(Wearable.API)
.addConnectionCallbacks(this)
.build();
if( mApiClient != null && !( mApiClient.isConnected() || mApiClient.isConnecting() ) )
mApiClient.connect();
}
@Override
protected void onResume() {
super.onResume();
if( mApiClient != null && !( mApiClient.isConnected() || mApiClient.isConnecting() ) )
mApiClient.connect();
}
@Override
public void onMessageReceived(MessageEvent messageEvent) {
mAdapter.add( new String( messageEvent.getData() ) );
mAdapter.notifyDataSetChanged();
Toast.makeText( this, "Wear onMessageReceived", Toast.LENGTH_SHORT ).show();
}
@Override
public void onConnected(Bundle bundle) {
Toast.makeText( this, "Wear onConnected", Toast.LENGTH_SHORT ).show();
Wearable.MessageApi.addListener( mApiClient, this );
}
@Override
protected void onStop() {
super.onStop();
if( mApiClient != null && mApiClient.isConnected() ) {
mApiClient.disconnect();
}
}
@Override
public void onConnectionSuspended(int i) {
}
从我的移动 Activity 中,我发送了一条我希望从 Wear Activity 中获取的消息。如果我使用 WearListenerService,则 onMessageReceived 会正常触发,但我无法让它在 Activity 中触发。
public class MainActivity extends Activity {
private GoogleApiClient mApiClient;
private ArrayAdapter<String> mAdapter;
private ListView mListView;
private EditText mEditText;
private Button mSendButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
initGoogleApiClient();
}
private void initGoogleApiClient() {
mApiClient = new GoogleApiClient.Builder( this )
.addApi( Wearable.API )
.build();
mApiClient.connect();
}
@Override
protected void onDestroy() {
super.onDestroy();
mApiClient.disconnect();
}
private void init() {
mListView = (ListView) findViewById( R.id.list_view );
mEditText = (EditText) findViewById( R.id.input );
mSendButton = (Button) findViewById( R.id.btn_send );
mAdapter = new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1 );
mListView.setAdapter( mAdapter );
mSendButton.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View view) {
String text = mEditText.getText().toString();
if( !TextUtils.isEmpty( text ) ) {
mAdapter.add( text );
mAdapter.notifyDataSetChanged();
sendMessage( text );
}
}
});
}
private void sendMessage( final String text ) {
new Thread( new Runnable() {
@Override
public void run() {
NodeApi.GetConnectedNodesResult nodes = Wearable.NodeApi.getConnectedNodes( mApiClient ).await();
for(Node node : nodes.getNodes()) {
Log.e("MainActivity", "node id: " + node.getId() );
MessageApi.SendMessageResult result = Wearable.MessageApi.sendMessage(
mApiClient, node.getId(), text, null).await();
}
runOnUiThread( new Runnable() {
@Override
public void run() {
mEditText.setText( "" );
}
});
}
}).start();
}
有人对我可能遗漏的内容有任何建议吗?我可以回退到使用服务,但如果可以的话,我想尝试让它与 Activity 一起使用。
谢谢!
最佳答案
所以事实证明 onMessageReceived 在它自己的线程上运行,而不是 UI 线程,所以你必须在 runOnUiThread 中包装 toast 消息和任何你自己的 UI 代码。
关于android - 磨损 Activity 中的 MessageApi.MessageListener 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25987014/
我正在使用 XMS 7.5 客户端访问 IBM MQ,想了解有关 MessageListener 的一件事。当队列中存在多条消息时, 相关的 MessageListener 方法(即下面代码中的 Pr
this question的答案|解释如何将原型(prototype)范围与 一起使用当监听器不是线程安全的时,在 Spring AMQP 中。 另一位用户询问(在评论中)如何仅使用 Java 配置
如何对实现 spring-kafka MessageListener 接口(interface)的类进行单元测试?我有一个监听器类,我正在使用 onMessage 函数手动监听主题。这个函数很简单,就
我正在尝试使用 JMS 实现在 #Solace Appliance 上发送/接收消息。 我正在使用 SolConnectionFactoryImpl 工厂来创建连接。一切看起来都不错,但是当我尝试将
我正在使用 ActiveMQ。我的消费者代码是从 main 方法调用的。一旦主类终止,我希望 JMSMessageListener 已在队列中注册,并且每当“TestTopic”上有消息时,将调用 o
有没有办法在 MessageListener 中注入(inject)服务? @Autowired @Qualifier("myServices") MyServices myService
订阅附近的服务总是声明订阅成功但 MessageListener 从未调用过: 主 Activity .java SubscribeOptions options = new SubscribeOpt
我使用 Spring Boot 2.2,需要通过 JMS 接收消息。 我看到我们可以使用注释 @Component public class JMSReceiver { @JmsListene
我使用 Spring Boot 2.2,需要通过 JMS 接收消息。 我看到我们可以使用注释 @Component public class JMSReceiver { @JmsListene
我正在测试使用 Camel 和 ActiveMQ 的 JMS 请求/回复的示例。当camel为你创建监听器时,我可以让这个例子工作。即。 from("direct:entryPoint").inOut
我有一个 spring 应用程序,我想使用 JMS Message Groups处理特定 block 中的 JMS 消息(以及相同的事务等)。基本上说我有 5 个相关事件,我有一个 JMSTempla
我正在尝试使用 Nearby API 将来 self 的 Eddystone Beacon (micro:bit) 的 Beacon 消息发送到我的 Android 应用程序.我从文档中复制了所有代码
我已经实现了 Oracle Advanced Queue,并且正在编写一个监听器程序。以下是我的示例: package com.myprog; import java.io.File; import
我一直在使用 JMS 和 ActiveMQ。一切都在创造奇迹。我没有使用 spring,我也不会。 javax.jms.MessageListener 接口(interface)只有一个方法,onMe
我有一个使用 Spring 框架的 Java 应用程序。它是一个监听器应用程序,可以非常快速地使用线程从某个源异步获取消息并将其保存到数据库中。 我正在使用 ExecutorService,它在 Se
如何确保有两个监听器容器: 接收来自不同主题的消息。线程安全吗? 正如您所看到的,它们使
我正在尝试使用 spring amqp 来使用 rabbitmq,下面是我的配置。 这是一个简单的消息监听器类, import org.springframework.amqp
如果我为 MessageConsumer 设置一个 MessageListener 对象,然后对该消费者调用 receive(),会发生什么?提供者会将消息交给 receive(),还是在消息被 Me
使用 spring 部署应用程序后如何启动 ActiveMQ messageListener? 下面给出了我的 xml 文件, -->
当我在我的队列 MessageConsumer 对象上设置一个 messageListener 时,到底发生了什么。 MessageConsumer 对象是否在后台进行某种轮询,或者这是 JMS 服务
我是一名优秀的程序员,十分优秀!