ソケットを使用してサーバーに正常に接続できます。問題は、アクティビティの読み込みに時間がかかりすぎることです。ハンドラーとランナブルを使用して、ネットワーク クラスのすべての行の TextView を変更しています。すべてが完了したようで、出力が得られます...バックグラウンドで実行され、アプリがすぐに読み込まれると考えて、ネットワークをスレッドとして作成しました。何か提案はありますか?
主な活動
package com.abhishek.ally2;
import android.os.Bundle;
import android.os.Handler;
import android.os.StrictMode;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView textview;
String header;
@SuppressLint("NewApi") @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
textview = (TextView)findViewById(R.id.status);
header = "GET /ally.php HTTP/1.0\nHost: easyvote.co.in\n\n";
Handler handler = new Handler();
Thread connect = new network("easyvote.co.in", 80, header, textview, handler);
connect.start();
((network) connect).statusShow();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
ネットワーク クラス
package com.abhishek.ally2;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import android.os.Handler;
import android.util.Log;
import android.widget.TextView;
public class network extends Thread {
Socket client = null;
DataOutputStream os = null;
DataInputStream is = null;
String host;
int port;
String responseLine;
String data;
String lastMsg;
public boolean status;
Handler handler;
TextView txt;
Runnable r;
int count;
network(String host, int port, String data, TextView status, Handler handler)
{
this.status = false;
this.txt = status;
this.handler = handler;
this.host = host;
this.port = port;
this.data = data;
count = 0;
//while(!status)
r = new Runnable(){
@Override
public void run() {
//Log.d("Response", responseLine);
txt.setText("Connecting...");
}
};
this.handler.post(r);
}
@SuppressWarnings({ "deprecation" })
public void statusShow()
{
try
{
client = new Socket(host, port);
os = new DataOutputStream(client.getOutputStream());
is = new DataInputStream(client.getInputStream());
if(client != null && os != null && is != null)
{
os.writeBytes(data);
while((responseLine = is.readLine()) != null)
{
lastMsg = responseLine;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d("Response", responseLine);
}
os.close();
is.close();
client.close();
Log.d("Response", lastMsg);
r = new Runnable(){
@Override
public void run() {
txt.setText(lastMsg);
}
};
this.handler.post(r);
}
}
catch (UnknownHostException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
前もって感謝します :)