0

サーバーに接続して通信する Android アプリケーションがあります。元々、このアプリは minSdk バージョン 8 (Android 2.2) でビルドされており、完全に機能しました。私は 4.03 を実行しているデバイスを持っているので、minSdk 15 バージョンを作成することにしました。これにより、サーバーに接続しようとするたびにアプリがクラッシュしました。

問題の原因を見つけるために、アプリを可能な限り削除しました。問題をソケットを初期化する関数に絞り込みました。この関数を実行しようとすると、アプリケーションがクラッシュします。

minSdk のバージョンを 8 に変更すると、完全に機能します。しかし、私が試した他のバージョン (10,14,15) では動作しません。バージョンで何が変わったのかわかりませんが、これが misSdk 8 でしか機能しないのは奇妙に思えます。

コードの一部を次に示します。

// Function that seems to cause problems
public void openConnection(){
    try{
        s = new Socket(InetAddress.getByName("192.168.1.84"),1500);
    }catch(IOException e){
e.printStackTrace();
    }
}
// Button handler
public void myClickHandler(View view){
    switch(view.getId()){
    case R.id.ConnectButton:
        this.openConnection();
    }
}
4

1 に答える 1

1

確かなことは言えませんが (logcat の出力を投稿してください!)、UI スレッドで接続を確立しようとしており、ICS がアプリをクラッシュさせている可能性があります (Web への接続を試みているため、当然のことです)。サーバーが UI スレッドにないことは、アプリが正しく機能しないことをほぼ確実に保証します)。AsyncTaskまたはを使用して接続していることを確認しますThread。多くの開発者が同様の問題を抱えており、通常はこの問題に関連しています。

于 2012-04-03T23:07:22.840 に答える