我的Activity
加载约3-5秒(太长时间)。
如何使用新的Threads
优化我的OnCreate方法?
或者这里有其他方法来优化我的代码?
我尝试创建新的Threads
,但在访问Objects
时始终遇到问题,这些问题是在工作Thread
中生成的。
这是我的OnCreate
代码:
if (getIntent().getBooleanExtra(EXIT_KEY, false)) {
finish();
}
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
mSignInProgress = savedInstanceState
.getInt(SAVED_PROGRESS, STATE_DEFAULT);
}
// Setting Content View
setContentView(R.layout.activity_main);
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, "")
);
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);
if (!settingsVK.getBoolean(VK_SIGNED_KEY, false)) {
vk_sign_out.setEnabled(false);
}
// VK sign out button
vk_sign_out.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
settings
.edit()
.putBoolean(SIGNED_IN_KEY, false)
.putString(PROFILE_PHOTO_LOCATION_KEY, "")
.apply();
startActivity(new Intent(MainActivity.this, FirstLaunchActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
finish();
}
});
答案 0 :(得分:0)
您应该考虑使用ViewStub - 它充当占位符,并在调用ViewStub#inflate()时替换为您的实际布局。如果布局复杂,这将减少您的活动启动时间。你也可以在onResume()而不是onCreate()中加入任何昂贵的方法调用来加快速度。
ViewStub stub = (ViewStub) findViewById(R.id.stub);
View inflated = stub.inflate();
答案 1 :(得分:0)
使用Android AsyncTasks执行此类任务,您还可以使用onPostExecute()方法访问UI视图。多个启动的asyncTasks按顺序执行是默认的,但您可以使用executeOnExecutor以真正的并行方式执行多个独立任务( )。 尝试在WWW上阅读有关Android UI到非UI线程通信的内容。 希望这有助于让你凝视......