0

モノドロイドを持ち込みたい小さなiOSアプリ(モノタッチを使用して作成)があります。ポートが原因でいくつかの問題が発生しています。そのうちのいくつかは、2つのプラットフォームがUIを実行し、それらの周りにクラスを作成する方法にあります。

iOSアプリにはこのようなコードがあります

private void BtnSomething_TouchUpInside (object sender, EventArgs e)
    {
        string f = this.foo;
                    LGPM gpm = new LGPM(Constants.a, Constants.b, f);
        this.auth = new Auth("cheese", gpm);
    (*) this.auth.TokenReceived += (o, e, a, aTS, r) => {
                    // more stuff here
        };

        this.PresentModalViewController(this.auth, true);
    }

authクラスは次のようになります

public partial class Auth
{
    public Auth(string m, data d)
    {
       this.d = d;
       this.m = m;
    }

 // create a UIWebView and do things

Upshot-authはWebビューを作成し、処理を実行して、制御を(*)行に戻します。

モノドロイドの場合、そのようなクラスを実際に作成することはできないため、状況は異なります。私が思いついた最高のものはこれです

private void BtnSomething_TouchUpInside (object sender, EventArgs e)
    {
        string f = this.foo;
                    LGPM gpm = new LGPM(Constants.a, Constants.b, f);
        this.auth = new Auth("cheese", gpm, context);
    (*) this.auth.TokenReceived += (o, e, a, aTS, r) => {
                    // more stuff here
        };

        this.PresentModalViewController(this.auth, true);
    }

次にAuthクラスで

public class Auth : Application
{
    public Auth(string m, data d, Context c)
    {
       this.d = d;
       this.m = m;
       Intent t = new Intent(this, typeof(webview));
       t.PutExtra("todo", 1);
       c.StartActivity(t);
    }
}

[Activity]

これは「通常の」Webビューアクティビティです。

これは機能しているように見えますが、Webビューが完了すると、制御は(*)行に戻りません。

Webビュー自体がWebサイトからのデータの非同期取得(AuthTokenと呼ばれる)を実行しているため、実行が完了するとイベントがスローされます。クラスとアクティビティの記述方法の違いによるものかどうかはわかりませんが、iOSバージョンではイベントがトリガーされ、Androidバージョンではイベントがトリガーされません。

これは、プラットフォームが非同期イベントを処理する方法が異なるのではないかと思います。2つのプラットフォームが非同期イベントを処理する方法の違いに関するチュートリアルはどこかにありますか?

私が知っている質問はたくさんありますが、スレッド化と非同期イベントは重要です。

ありがとう

4

1 に答える 1