我知道这是一个重复的问题,我知道当旋转设备时,会再次调用OnCreate方法,我想保持这样;我不想完成重写onConfigurationChanged或对我的Application类进行子类化的步骤,因为android正在以最佳方式进行重新加载(特别是在保存当前值和状态时)。
但是,我在OnCreate方法中有一些命令,如果由于Rotation重新加载Activity,我不想执行它们,所以是否有任何属性/方法可以判断OnCreate是否因第一个Application启动而被触发或者由于方向改变?
例如:
if(< OnCreate triggered due to Orientation > == false)
// Execute my commands...
else
// Do nothing...
或者,我们是否在OnCreate之前或OnConfigurationChanged之前触发Android中的任何事件?
答案 0 :(得分:0)
为什么不将当前方向存储在SharedPreferences中,并将当前方向与onCreate中的存储值进行比较(然后将新方向保存到SharedPreferences)?
这应该提供您需要的功能,除非我误解了某些内容。
答案 1 :(得分:0)
尝试使用onSaveInstanceState,如果要在活动被销毁之前保存一些状态信息,然后使用onRestoreInstanceState来检索它。
您还可以在onCreate中使用getRequestedOrientation()来获取新的方向。
您也可以在onCreate()
中使用它Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
int orientation = display.getOrientation();
答案 2 :(得分:0)
Activity类有一个特殊的 方法叫做 onRetainNonConfigurationInstance()。 这个方法可以用来传递一个 任意对象你未来的自我和 Android很聪明,可以称之为 方法仅在需要时使用。
了解更多here。