1

実行中のスレッドからオブジェクトを返す良い方法があるかどうか疑問に思っています。私のAndroidプロジェクト(質問には重要ではありません)では、次の方法があります:

public void getFolders()
{
    Thread t = new Thread(new Runnable() 
    {
        @Override
        public void run() 
        {
            List<File> result = new ArrayList<File>();
            Files.List request = null;

            do 
            {
                try 
                {
                    request = service.files().list();
                    request.setQ("'appdata' in parents");

                    FileList files = request.execute();

                    result.addAll(files.getItems());
                    request.setPageToken(files.getNextPageToken());
                } 
                catch (IOException e) 
                {
                    System.out.println("An error occurred: " + e);
                    request.setPageToken(null);
                }
            } 
            while (request.getPageToken() != null && request.getPageToken().length() > 0);
        }   
    });

    t.start();
}

このメソッドは、インターネットからデータを取得し、結果を に保存しList<File> resultます。そのため、UI スレッドで実行したくありません。ここで、この List をメイン メソッドに返したいと思います。これを行う最善の方法は何ですか?

4

2 に答える 2

5
public interface Callable<V>

結果を返し、例外をスローする可能性があるタスク。実装者は、call という引数のない単一のメソッドを定義します。

インタフェースは、インスタンスが別のスレッドによって実行される可能性のあるクラス用に設計されているという点で に似Callableています。Runnableただし、 ARunnableは結果を返さず、チェック例外をスローできません。

Callable の使い方

編集: また、バックグラウンド タスクを実行するために Android でAsyncTaskを使用し、独自のスレッドを作成しないでください。

于 2013-09-14T16:12:03.570 に答える