1
如何使用Android Service
与AsyncTask
?有可能(或)不可能?如何使用AsyncTask服务?
我想实现套接字消息接收器。我的UI线程和AsyncTask
用于套接字消息接收器创建,但我的应用程序工作缓慢,所以我需要任何其他解决方案。
Runnable mHandlerTask;
Handler mHandler;
void init() {
mHandler = new Handler();
mHandlerTask = new Runnable(){
@Override
public void run(){
Scoketvalue_Reciver();
mHandler.postDelayed(mHandlerTask, INTERVAL);
}
};
}
private void Scoketvalue_Reciver() {
new MainActivity.FileServerAsyncTask(this,info).execute();
}
void startRepeatingTask(){
mHandlerTask.run();
}
void stopRepeatingTask(){
mHandler.removeCallbacks(mHandlerTask);
}
public FileServerAsyncTask(Context context , WifiP2pInfo info){
this.context = context;
this.info = info;
}
@Override
protected String doInBackground(Void... params){
try{
ServerSocket serverSocket;
serverSocket = new ServerSocket(8988);
Socket client = serverSocket.accept();
Log.d("vishnu ","getInetAddress ::"+client.getInetAddress());
if(info.isGroupOwner) {
Utils.clientipAddress = String.valueOf(client.getInetAddress().getHostAddress());
}
BufferedReader input = new BufferedReader(new InputStreamReader(client.getInputStream()));
String st = null;
st = input.readLine();
serverSocket.close();
return st;
} catch (IOException e) {
Log.e(TAG, e.getMessage());
return null;
}
}
/*
* (non-Javadoc)
* @see android.os.AsyncTask#onPostExecute(java.lang.Object)
*/
@Override
protected void onPostExecute(String result) {
if (result != null) {
Toast.makeText(context.getApplicationContext(),"value "+result,Toast.LENGTH_SHORT).show();
MainActivity.sentpickedholeid(result);
// statusText.setText("File copied - " + result);
}
}
/*
* (non-Javadoc)
* @see android.os.AsyncTask#onPreExecute()
*/
@Override
protected void onPreExecute() {
// statusText.setText("Opening a server socket");
}
}
你试过我提出的解决方案吗? – Oleksandr