-1

過去数日間、私は何かを理解しようとしていましたが、運がありませんでした.Androidゲームを開発しています.今のところ、それぞれ独自の目的を持つ3つのパッケージがあります:

1 - GUI クラスのパッケージ。2 - wcf サービス (login/pass DB) と通信するクラスを含むパッケージ 3 - 非同期クラス/ワーカーを保持するパッケージ (GUI とサービスの間のブリッジのようなもの)

Android/Javaゲーム開発に関してこれが正しいアプローチであるかどうかはわかりませんが、達成したいのは、GUIでの簡単な登録/ログインであり、ユーザーが登録またはログインを完了したとき、GUIが話している間です「ブリッジ」を介してサービスにアクセスすると、「登録中」または「ログイン中」というダイアログのようなメッセージがユーザーに表示されます。

これを達成する方法について、より経験豊富なプログラマーからのヒント/フィードバックを聞きたいと思います。これが正しいアプローチである場合、そして最も重要なことに、この特定のケースのいくつかの例が本当に役立つ場合、私は asynctask で作業しようとしましたが、これら 3 つの個別のパッケージ間で通信し、非同期タスクを介してサービスからの結果を GUI に返す方法がわかりませんでした。

4

1 に答える 1

0

これを見てください

public class FindEventsActivity extends Activity {

ProgressDialog pd;

// lots of other code up here
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.clickete);

    pd = new ProgressDialog(this);
    pd.setMessage("loading");

    findViewById(R.id.clickLayout).setOnClickListener(
            new OnClickListener() {

                @Override
                public void onClick(View v) {
                    new LongOperation().execute("");
                    pd.show();
                }
            });
}

private class LongOperation extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... params) {
        for (int i = 0; i < 15; i++) {
            try {
                Thread.sleep(1000); // Simulates your intensive work
                // Update your progress if you want
                this.publishProgress();
            } catch (InterruptedException e) {
                return "Failed";
            }
        }
        return "Executed";
    }

    @Override
    protected void onPostExecute(String result) {
        // Handle fail or success accordingly
        pd.dismiss();
    }

    @Override
    protected void onPreExecute() {
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        // Update UI according to your progress
    }
}
}

これが役に立ち、あなたの仕事を楽しんでくれることを願っています

于 2013-05-20T07:02:40.247 に答える