Насколько нам известно, мы не можем выполнить веб-соединение в потоке пользовательского интерфейса и пытаться выполнить его на Thread или AsyncTask, и я решил запустить веб-соединение в runnable Thread. Когда я нажимаю кнопку, журнал показывает мне, что код с connection.connect();
оказался исключением NetworkOnMainThreadException, но, как вы знаете, из моего кода ниже я уже написал свой код networkconnecton в потоке, так что кто-нибудь покажет мне правильный способ справиться с Эта проблема?One Strange NetWorkOnMainThreadException
public class MainActivity extends Activity {
private Button btn_send;
private EditText et_content;
private Connection connection;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_send = (Button) findViewById(R.id.bt_sendms);
et_content = (EditText) findViewById(R.id.et_inputcontent);
btn_send.setOnClickListener(onClicListener);
}
public OnClickListener onClicListener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
handler.post(task);
}
};
private Handler handler = new Handler();
private Runnable task = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
XMPPConnection.DEBUG_ENABLED = true;
ConnectionConfiguration connectionConfig = new ConnectionConfiguration(
"192.168.1.108", Integer.parseInt("5222"), "dell-PC");
AccountManager accountManager;
connectionConfig.setReconnectionAllowed(true);
connectionConfig.setSendPresence(true);
connection = new XMPPConnection(connectionConfig);
try {
connection.connect();
accountManager = connection.getAccountManager(); //
connection.login("admin", "888889");
ChatManager chatManager = connection.getChatManager();
Chat newChat = chatManager.createChat("[email protected]",
new MessageListener() {
@Override
public void processMessage(Chat chat,
Message message) {
}
});
try {
newChat.sendMessage(et_content.getText().toString());
} catch (XMPPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
et_content.setText("");
} catch (XMPPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //
}
};
}
Не используйте 'Handler'. Он работает на том же самом потоке, который связан, в случае основного потока пользовательского интерфейса. http://developer.android.com/reference/android/os/Handler.html – Simon