我已经创建了一个启动活动,我将调用另一个具有视图寻呼机并显示一些介绍性页面的活动。
这个应用程序需要时间来加载所以我想在活动加载之前显示一个进度对话框,但是几秒钟之后也会出现该进度对话框。
启动活动:
public class StartUpActivity extends AppCompatActivity {
boolean isUserFirstTime, login;
public static String PREF_USER_FIRST_TIME;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
isUserFirstTime = Boolean.valueOf(Utils.readSharedSetting(StartUpActivity.this, PREF_USER_FIRST_TIME, "true"));
Intent introIntent = new Intent(StartUpActivity.this, SlidingActivity.class);
introIntent.putExtra(PREF_USER_FIRST_TIME, isUserFirstTime);
ProgressDialog dialog = new ProgressDialog(StartUpActivity.this);
dialog.setMessage("Welcome to Mea Vita, please wait till the app loads.");
dialog.setCancelable(false);
dialog.setInverseBackgroundForced(false);
dialog.show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//Here you can send the extras.
startActivity(new Intent(StartUpActivity.this,SlidingActivity.class));
// close this activity
finish();
}
}, 4000);
}
}
每次都不会发生这种情况,有时只会发生。可能的原因是什么?我怎么能阻止这个? 有解决方案吗谢谢..
答案 0 :(得分:4)
新发布的JTextField amountField = new IntegerField("15");
...
//amount will be zero if nothing is entered
int amount = amountField.getInt();
有一个奇怪的问题(2.1中的同一问题)第一次启动应用程序的时间比平时长(例如2,3秒或有时屏幕闪烁或变黑)这个问题只发生在调试模式,不会影响你发布的APK。
解决此问题的临时解决方案是禁用Android Studio 2.0
:
instant run
答案 1 :(得分:3)
首先,规则是在异步任务中加载所有数据,您必须检查要在加载数据的位置启动的活动。
问题在于你的第二项活动。
oncreate
方法只应用于制作findviews
或启动async tasks
,不要在oncreate
或onstart
或onresume
中加载任何方法。
您可能正在以滑动布局加载高分辨率图像或在其中加载数据。
还有另外一种方法,在第一个活动中加载异步任务中的所有数据,然后使用就绪数据启动已加载数据的第二个活动。
答案 2 :(得分:2)
有些事情可以缓慢加载。
Utils.readSharedSetting(StartUpActivity.this, PREF_USER_FIRST_TIME, "true")
从偏好中读取。那是你正在同步阅读的文件。我建议在活动本身内显示你的加载,以尽量减少渲染它所需的工作。
此外,您可以将PREF_USER_FIRST_TIME
存储为boolean
而不是String
。