アプリケーションオブジェクトとしてソケットを作成しようとしています。アクティビティのコードは次のとおりです。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = getApplicationContext();
setContentView(R.layout.activity_connect);
app = (MyApplication) getApplication();
connectButton = (ImageButton) findViewById(R.id.connect_button);
connectButton.setOnClickListener(connectListener);
//app.stablishConnection();
}
private OnClickListener connectListener = new OnClickListener() {
@Override
public void onClick(View v) {
app.stablishConnection();
Intent intent = new Intent(context, ShowDetails.class);
startActivity(intent);
}
};
そして、これがApplicationクラスのコードです
private Socket socket;
Context context;
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
@Override
public void onLowMemory() {
super.onLowMemory();
}
@Override
public void onTerminate() {
super.onTerminate();
}
public void stablishConnection(){
try { InetAddress serverAddr;
serverAddr = InetAddress.getByName("10.10.10.10");
socket = new Socket(serverAddr, 5000);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
アプリケーションが閉じられるまでソケットが破壊されないようにし、ユーザーがボタンをクリックしたらソケットを作成したいと思います。
アクティビティがを呼び出すと、システムはandroidblockguardpolicy例外を表示しますapp.stablishConnection()
。また、onCreateでこのメソッドを呼び出そうとしました(コメントが表示されています)。その場合、アプリsocket = new Socket(serverAddr, 5000);
がアプリケーションクラスにソケットを作成しようとすると、componentInfo例外を開始できませんと表示されます。
どうすればこれを修正できますか?