0

Androidはかなり新しく、Android 2.3.5(Gingerbread)を使用してアプリを作成/テストしました。HTTP Postを使用した(ただしAsyncTaskは使用しなかった)複数のデータベース接続があり、すべてがうまく機能しました。次に、Android 4.0.3(Ice Cream Sandwhich)でテストしましたが、データベースに接続できないため、アプリが機能しません。

この動作するアプリをIceCreamSandwhichで実行できるようにするには、何を考慮する必要がありますか?データベース接続をUIスレッド(AsyncTaskではない)から移動しましたが、それでも接続されません。

UIスレッドの外部で作成したクラスは次のとおりです。

パブリッククラスInputsRecapGetTask{

public InputsRecapGetTask(InputsRecap activity,
        ProgressDialog progressDialog) {
    this.activity = activity;
    this.progressDialog = progressDialog;

    getDatabase();

}

public void getDatabase() {
    // TODO Auto-generated method stub
    progressDialog.show();

    // create new default httpClient
            HttpClient httpclient = new DefaultHttpClient();
            // create new http post with url to php file as pararmenter
            HttpPost httppost = new HttpPost(
                    "http://test.com/returnBBD.php");

            // assign input text to strings
            user = Login.userStatic;
4

1 に答える 1

0

ログを調べましたか?IIRC、Android 4では、httpリクエストがメインスレッドから実行されないようにする必要があります。これを伝えるメッセージが必要です。

一方で、それを覚えておいてください

  1. 画面を回すと、AsyncTaskを作成したアクティビティが画面から(永久に)削除され、別のアクティビティに置き換えられる場合があります。それ(最初のアクティビティ)は結果を受け取りますが、何も表示しません。

  2. Android 4では、すべてのAsyncTasksはデフォルトで単一のスレッドによって処理されます。これにより、応答が要求が行われた順序で到着することが保証されますが、2番目の要求は、最初の要求が終了した(またはタイムアウトした)後にのみ開始されることも意味します。

MVCによると、データの取得は、ビューの存続期間であるコントローラー(アクティビティー)ではなく、モデルによって実行される必要があります。

于 2013-03-05T05:47:48.013 に答える