如何知道活动何时完成加载?

时间:2015-06-22 08:54:14

标签: java android android-activity progressdialog android-lifecycle

我正在尝试实现将加载所有活动的ProgressDialog。 所以我将这一行添加到onCreate()方法:

pd = ProgressDialog.show(this, "Waiting...", "Please wait five seconds..."); 

但是在所有内容加载后开始加载,并且它不会停止,因为我不知道在哪里添加行:

pd,dismiss();

因此,有任何内置方法在活动显示时调用(如在iOS中 - viewDidAppear)和另一个内置方法,当活动加载完毕并且所有内容都已加载时调用?

3 个答案:

答案 0 :(得分:0)

什么意思加载所有活动?我认为你走错了路。你不能加载所有的活动,但是你可以调用一个intent来启动一个活动。在这种情况下,活动lifeCycle出现在图片中。

请看看这个: http://www.mikestratton.net/assets/android_activity_lifecycle.png

如果您想要我们progressdialog,并在后台线程上加载任何内容,请阅读: progressDialog in AsyncTask

在Android中处理对话框的好例子: http://examples.javacodegeeks.com/android/core/ui/progressdialog/android-progressdialog-example/ 请不要尝试加载所有活动。永远不要打电话给新的MyActivity(); NEVER

答案 1 :(得分:0)

"我从网络"

获取内容的活动

我从你的评论中得到这一行,这意味着你需要在那个时候获取一些数据,你需要显示ProgressDialog。

如果这是正确的,那么您可能会将AsyncTask用于webservice

因此,您不需要显示onCreate方法的对话框。您需要从AsyncTask onPreExecute()方法显示ProgressDialog。

完成后,您需要cancel dialog方法中的onPostExecute

修改 AsyncTask参考http://developer.android.com/reference/android/os/AsyncTask.html 这是完美的教程。

答案 2 :(得分:-1)

您可以在onStop()

中关闭对话框
@Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
        pd.dismiss();
    }

或者您可以在onDestroy()

中解雇
@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
      pd.dismiss();
}