我的应用程序中有seveal actvities,但在它们之间切换太长。我在这样的活动之间切换:
onClick(View v) {
startActivity(new Intent(FirstLaunchActivity.this, MainActivity.class));
finish();
}
新活动的onCreate
:
super.onCreate(savedInstanceState);
// Setting Content View
setContentView(R.layout.activity_main);
if (getIntent().getBooleanExtra(EXIT_KEY, false)) {
finish();
}
if (savedInstanceState != null) {
mSignInProgress = savedInstanceState
.getInt(SAVED_PROGRESS, STATE_DEFAULT);
}
mClient = buildGoogleApiClient();
settings = getSharedPreferences(APP_PREFERENCES, MODE_PRIVATE);
settingsVK = getSharedPreferences(VK_PREFERENCES, MainActivity.MODE_PRIVATE);
// Load Navigation Drawer
getDrawer(
settingsVK.getString(VK_INFO_KEY, ""),
settingsVK.getString(VK_EMAIL_KEY, "")
);
/** GOOGLE **/
mSignInButoon = (SignInButton) findViewById(R.id.sign_in_button);
mSignInButoon.setOnClickListener(this);
mSignOutButton = (Button) findViewById(R.id.sign_out_button);
mSignOutButton.setOnClickListener(this);
/****/
if (getIntent().getBooleanExtra(JUST_SIGNED_KEY, false))
initDialog_share();
// Get and set system services & Buttons & SharedPreferences & Requests
inputMethodManager = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
vk_sign_out = (CustomView) findViewById(R.id.vk_sign_out);
vk_sign_out.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AsyncTask<Void, Void, Void>() {
@Override
protected void onPreExecute() {
startActivity(new Intent(MainActivity.this, FirstLaunchActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
finish();
}
@Override
protected Void doInBackground(Void... params) {
settings
.edit()
.putBoolean(SIGNED_IN_KEY, false)
.putString(PROFILE_PHOTO_LOCATION_KEY, "")
.apply();
settingsVK
.edit()
.putString(VK_PHOTO_KEY, "")
.putString(VK_EMAIL_KEY, "")
.putString(VK_INFO_KEY, "")
.putBoolean(VK_SIGNED_KEY, false)
.apply();
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
}
}.execute();
}
});
if (!settingsVK.getBoolean(VK_SIGNED_KEY, false)) {
vk_sign_out.setEnabled(false);
}
我使用了AsyncTask
和Theads
,但仍需要等待太久。我如何优化我的代码?
答案 0 :(得分:0)
无需每次都完成活动。
例如
第1,2,3,4页是注册用户的应用程序
当我要开始第2页时,我只是startActivity,无需调用完成。 如果我调用backbuttonPressed()函数,那么每件事都可以。 (super.backbuttonPressed()已经包含finish()) 我不需要重置第1页并轻松使用它。
如果我完成了page4注册并想要返回主页面, 我将调用startActivity(page1)并在此之后调用finish page4。