使用 onCreate 准备就绪后切换到 activity
Switch to activity after it's ready with onCreate
我有两项活动,一项是从 Intent
开始另一项。 child activity 在 onCreate
中有大量工作要做。第一个 activity 仅用于加载。当我启动 child activity 时,我在加载完成后黑屏等待。
如何等待第一个 activity 并在完成创建后切换到第二个(某些侦听器或回调?)
你必须使用 AsyncTask。
试试这个代码
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// call your long task from here
doWork();
}
// write this method in your First Activity
private void doWork()
{
new AsyncTask<Void, Void, String>()
{
ProgressDialog progressDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setMessage("Loading...");
progressDialog.show();
}
@Override
protected String doInBackground(Void... params) {
// do your long task here
// And return your result to the onPostExecute method.
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
// after finishing your task dismis your dialog.
progressDialog.dismiss();
// And go to your next Activity.
Intent intent = new Intent(MainActivity.this, NextActivity.class);
startActivity(intent);
}
}.execute();
}
}
我有两项活动,一项是从 Intent
开始另一项。 child activity 在 onCreate
中有大量工作要做。第一个 activity 仅用于加载。当我启动 child activity 时,我在加载完成后黑屏等待。
如何等待第一个 activity 并在完成创建后切换到第二个(某些侦听器或回调?)
你必须使用 AsyncTask。
试试这个代码
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// call your long task from here
doWork();
}
// write this method in your First Activity
private void doWork()
{
new AsyncTask<Void, Void, String>()
{
ProgressDialog progressDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setMessage("Loading...");
progressDialog.show();
}
@Override
protected String doInBackground(Void... params) {
// do your long task here
// And return your result to the onPostExecute method.
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
// after finishing your task dismis your dialog.
progressDialog.dismiss();
// And go to your next Activity.
Intent intent = new Intent(MainActivity.this, NextActivity.class);
startActivity(intent);
}
}.execute();
}
}