我正试图监视android上的网络连接。这不能在主线程中完成,因此数据收集发生在我产生的单独线程上 - 而且我正在学习使用Handler类每秒向用户界面报告。这里是我的代码的相关片段...在android中的消息和字符串之间的转换?
public class MainActivity extends Activity {
private TextView textView;
private int linkSpeed;
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
Message message = msg;
textView.setText(message);
setContentView(textView);
}
};
/** Called when the activity is created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
textView = new TextView(this);
textView.setTextSize(25);
Thread thread = new Thread() {
public void run() {
for (;;) {
try {
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
while (true)
{
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
if (wifiInfo != null) {
linkSpeed = wifiInfo.getLinkSpeed(); //measured using WifiInfo.LINK_SPEED_UNITS
}
else {
linkSpeed = -1;
}
}
String message = "linkSpeed = " + linkSpeed;
handler.handleMessage(message);
Thread.sleep(1000);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
};
thread.start();
}
的问题是,我在新的线程我产卵得到消息的类型是“字符串”,但我似乎不能超载的handleMessage方法在处理程序类使用字符串而不是消息。我不认为字符串和消息之间有直接的转换,因为Message类中返回String的唯一方法是toString()方法,但它返回一个描述,而不是消息包含的内容。我也对如何将字符串转换为消息感到困惑 - 我觉得我正在做一个非常迂回的方法。任何帮助将不胜感激!
我得到它的工作。这真的很简单,很有帮助,谢谢!我没有真正使用处理器类,我只是在try块中调用runOnUiThread来显示主线程中的文本。 –