Android 용 간단한 IRC 클라이언트를 구축 중입니다.Android : AsyncTask를 통해 scoket에 데이터를 쓰는 방법
AsyncTask를 사용하여 Freenode/IRC 서버에 연결합니다.
내가 쉽게 IRC 서버에서 모든 응답을 얻을 수
하는 I는 응답에 대화 기반을 표시 할 수 있습니다.
public class IrcTask extends AsyncTask<Void, String, Void> {
public IrcTask(Activity activity, ProgressDialog pdialog, ScrollView sv_channel_output, List<String> join_users, BufferedWriter writer, BufferedReader reader, TextView outputView, String channel, String nick, String login) {
this.activity = new WeakReference<Activity>(activity);//ChannelActivity
this.nick = nick;
this.login = login;
}
@Override
protected Void doInBackground(Void... Sparams) {
// Connect directly to the IRC server.
try {
// Log on to the server.
this.writer.get().write("NICK " + nick + "\r\n");
this.writer.get().write("USER " + login + " 8 * : Freenode for Android App IRC Bot\r\n");
this.writer.get().flush();
// Join to the channel.
this.writer.get().write("JOIN " + channel + "\r\n");
this.writer.get().flush();
// Read lines from the server until it tells us we have connected.
String line = null;
while ((line = this.reader.get().readLine()) != null) {
publishProgress(line);
if (line.contains("PING ")) {
// We must respond to PINGs to avoid being disconnected.
this.writer.get().write("PONG " + line.substring(5) + "\r\n");
this.writer.get().flush();
}
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
내 ChannelActvity에서 텍스트/데이터를 서버로 보내도록 EditView가 있습니다.
내 문제는 일부 쓰기 데이터를 서버에서 읽는 동안 AsyncTask에 전달하는 것입니다.
나는 IrcServer에 쓰기 데이터를 전달하기 위해 '된 SharedPreferences'를 사용하여 시도했다 (후에 doInBackground-> .. 바로 실행되는 동안 그래서 내 ChannelActicity 다시 데이터를 보낼 수 있습니다 시작).
그러나 그것은 작동하지 않습니다 ...이처럼
...// Read lines from the server until it tells us we have connected.
String line = null;
while ((line = this.reader.get().readLine()) != null) {
//gets/sets IRC-detils from 'MainActivity'
pref = this.activity.get().getSharedPreferences("writeToIrcTack", 0);
if(pref.getString("data", "").length() >0)
{
Log.d("doInBackground->IF-it-gets-data", "pref.getString=="+pref.getString("data", ""));
this.writer.get().write("NOTICE "+channel+" " + pref.getString("data", "") + "\r\n");
this.writer.get().flush();
}
publishProgress(line);
오히려 내가 – njzk2
내가 Hanlders과 함께 노력할 것입니다 .. – Voidcode