AsyncTask に複数のプリミティブパラメータを渡すにはどうすればよいでしょうか? 質問する

AsyncTask に複数のプリミティブパラメータを渡すにはどうすればよいでしょうか? 質問する

関連する質問としては、AsyncTask クラスに 2 つのパラメータを渡すにはどうすればいいですか?しかし、複数のプリミティブをパラメータとして AsyncTask に渡そうとする試みが無駄に終わり、困難に直面したので、私が発見したことを共有したいと思います。この微妙な点は既存の質問と回答には記載されていないため、私と同じ問題に遭遇した人を助け、苦労から解放したいと思っています。

質問はこれです:私は複数の原生的バックグラウンドで実行するために AsyncTask に渡したいパラメータ (例: 2 つの long) がありますが、これはどのように実行できますか? (しばらくこの問題に悩んだ後の私の答えは以下にあります。)

ベストアンサー1

次のように、プリミティブを単純なコンテナにラップし、それを にパラメータとして渡すだけですAsyncTask

private static class MyTaskParams {
    int foo;
    long bar;
    double arple;

    MyTaskParams(int foo, long bar, double arple) {
        this.foo = foo;
        this.bar = bar;
        this.arple = arple;
    }
}

private class MyTask extends AsyncTask<MyTaskParams, Void, Void> {
    @Override
    protected void doInBackground(MyTaskParams... params) {
        int foo = params[0].foo;
        long bar = params[0].bar;
        double arple = params[0].arple;
        ...
    }
}

次のように呼び出します:

MyTaskParams params = new MyTaskParams(foo, bar, arple);
MyTask myTask = new MyTask();
myTask.execute(params);

おすすめ記事