2 つの単純なクラスがあります。
public class MainActivity extends Activity {
NetworkTask task;
@Override
protected void onCreate(Bundle savedInstanceState) {
[...]
task = new NetworkTask();
task.execute();
}
public void myClickHandler(View view) {
switch(view.getId()) {
case R.id.button1:
// Why this line crash?
task.connection("127.0.0.1");
break;
}
}
}
と
public class NetworkTask extends AsyncTask<String, Void, String> {
Socket sock;
volatile boolean running = true;
public int connection(String url){
try{
sock = new Socket(url, 4567)
}
catch (IOException ex){
Logger.getLogger(NetworkTask.class.getName()).log(Level.SEVERE, null, ex);
return -1;
}
}
public String doInBackground(String... strings) {
// If I do this, it works well
//connection(127.0.0.1);
while(running)
{
[...]
}
return null;
}
}
AsyncTask メソッドの外部から接続メソッドを呼び出すとコメントしたように、アプリは特に « sock = new Socket(...) » 行でクラッシュします。ただし、AsynTask メソッド内で接続呼び出しが行われると、ソケットが作成されます。理由がわかりません。
何が起こっていますか?
ありがとう。