1

別のスレッドに連絡先をアップロードしようとしています。アプリケーションコンテキストを取得していますが、機能しないようです。なんで?

コードは次のとおりです。

private void uploadall() {
    new Thread(new Runnable() {
        public void run() {

            Contacts contacts = new Contacts(getApplicationContext());
            contacts.phoneandname();

            // Apps
            ListApps mList = new ListApps();
            mList.loadInstalledApps(false, getApplicationContext());

        }
    });
}

そして、スレッドなしでアップロードしようとすると、完全に機能します...なぜですか?

4

2 に答える 2

1

実際にスレッドを開始しているわけではありません。次のことを試してください。

private void uploadall() {
  Thread thread = new Thread(new Runnable() {
    public void run() {
      ...
    }
  });

  thread.start();
}

Oracleの並行性チュートリアルは、Javaでマルチスレッドを開始する場合に非常に優れたリソースであり、ここにあります。

于 2012-07-17T09:31:57.397 に答える
1

次のようにしてみてください:

private void uploadall() {
private Context context=getApplicationContext();

    Thread thread = new Thread(new Runnable() {
    public void run() {

            Contacts contacts = new Contacts(context);
            contacts.phoneandname();

            // Apps
            ListApps mList = new ListApps();
            mList.loadInstalledApps(false,context);

        }
    });
    thread.start();
}
于 2012-07-17T09:35:29.523 に答える