1

我有一个关于线程的问题。我不确定这里发生了什么。我的理解是,在长时间的活动完成之前,进度对话框不会结束,但这不是正在发生的事情。我希望长时间的活动开始、完成、关闭微调器,然后带着意图开始新的活动。

 final ProgressDialog spinnerDialog = ProgressDialog.show(  
                MainScreen.this, "",  
                "Waiting for accurate (> 10 meters) GPS coordinates...Please wait. ", true);  
            new Thread(new Runnable() {  
                public void run() {  
                    //Do something that takes a while
                    spinnerDialog.dismiss();  
                    return;  
                }  
            }).start();

              Intent tvi = new Intent();
              tvi.setClass(getInstance(), TabbedView.class);
              startActivity(tvi);
4

1 回答 1

0

应在主 (UI) 线程中启动新活动。但是仅仅在启动新线程后编写代码并不能保证您拥有创建意图所需的所有信息。我建议使用处理程序

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    progress = (ProgressBar) findViewById(R.id.progressBar1);
    handler = new Handler();
    startprogress();
}

public void startProgress(View view) {
    // Do something long
    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            //do long stuff (like getting info for intent)
            handler.post(new Runnable() {
            @Override
            public void run() {
                //make new intent
                //start new activity with intent you just made
            }
        });
        }
    }
    };
    new Thread(runnable).start();
}

}

更重要的是,这里是处理程序开发人员页面的链接:http: //developer.android.com/reference/android/os/Handler.html

于 2012-05-01T01:58:19.700 回答