我有这样的代码
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
boolean autoLogin = false;
autoLogin = checkAutoLogin();
if(autoLogin) {
showProgress();// Show progress dialog
if(login(savedUserName,savedPassword)) {
//call home activity using startActivity();
}
// login(savedUserName,savedPassword), this function access the server and return true if username and password correct- this works properly
}
}
现在问题是,在home activity
的身份验证时间内,我显示main activity
而不显示progress dialog
及其login(savedUserName,savedPassword)
(此功能需要花费可数的时间,因为服务器认证)功能,我只得到一个黑屏,在这段时间我想要显示主要活动和进度对话框。
注意:如果我点击home activity
中的后退按钮,我可以main activity
和progress dialog
答案 0 :(得分:1)
你不应该在UI线程上进行网络操作,你可以在单独的线程中进行,然后你可以使用Handler对象调用home活动,它将解决你的问题
答案 1 :(得分:0)
根据您的showProgress()
方法所包含的内容,我猜测showProgress
会运行,发现没有活动login
尝试发生,并自行解散,然后{{1调用方法。
您要做的是异步启动login()
,然后启动进度对话框,检查login()
是否已完成。
这只是我能看到你的代码的猜测。
你可以发布更多内容吗?
尝试将一些 logcat 登录到login()
方法,以查看它是否实际上正在快速创建和销毁。
答案 2 :(得分:0)
在AsynchTask中完成你的时间消耗任务。 this类的设计完全适用于您正在寻找的工作类型。使用doInBackground()方法完成任务,而onPreExecute则可以显示进度对话框。