- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在调试涉及方向更改和一些空返回的情况时卡住了。
我的问题分为:
1) 当方向改变时,Activity 生命周期的回调会被执行。
2) 当方向改变时,Fragment 的生命周期回调会被执行。
3) 如果我们合并第 2 点和第 3 点(这通常是 fragment 覆盖 Activity 的情况),根据具有 fragment 的 Activity(执行流程?),回调执行流程将是什么。
编辑
如果在 android list 文件中没有定义 configChanges 即:
If any configuration change occurs that is not selected to be reported by that attribute, then instead of reporting it the system will stop and restart the activity (to have it launched with the new configuration).
Activity 和 Fragment 将执行哪些生命周期回调?
最佳答案
首先,在 AndroidManifest 中将其添加到您的 Activity 中:android:configChanges="orientation"
1). onConfigurationChanged
2).没什么,但是您可以实现您的方法并从 Activity 的 onConfigurationChanged 中调用它
3).流程将是 Activity.onConfigurationChanged -> Fragment.yourMethod
希望这对您有所帮助。
已更新
这是您第一次开始 Activity 时的流程:
Activity.onCreate
Activity.onStart
Fragment.onAttach
Fragment.onCreate
Fragment.onCreateView
Fragment.onViewStateRestored
Fragment.onStart
Activity.onResume
Fragment.onResume
这是方向改变后的流程:
Activity.onPause
Fragment.onPause
Activity.onSaveInstanceState
Fragment.onSaveInstanceState
Activity.onStop
Fragment.onStop
Activity.onDestroy
Fragment.onDestroy
Fragment.onDetach
Fragment.onAttach
Fragment.onCreate
Activity.onCreate
Activity.onStart
Fragment.onCreateView
Fragment.onViewStateRestored
Fragment.onStart
Activity.onRestoreInstanceState
Activity.onResume
Fragment.onResume
检查代码如下:
public class FooActivity extends FragmentActivity {
private static final String LOG_TAG = FooActivity.class.getSimpleName() + "_TAG";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(LOG_TAG, "Activity.onCreate");
setContentView(R.layout.activity_foo);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new BarFragment())
.commit();
}
}
@Override
protected void onPause() {
Log.i(LOG_TAG, "Activity.onPause");
super.onPause();
}
@Override
protected void onStop() {
Log.i(LOG_TAG, "Activity.onStop");
super.onStop();
}
@Override
protected void onDestroy() {
Log.i(LOG_TAG, "Activity.onDestroy");
super.onDestroy();
}
@Override
protected void onResume() {
Log.i(LOG_TAG, "Activity.onResume");
super.onResume();
}
@Override
protected void onStart() {
Log.i(LOG_TAG, "Activity.onStart");
super.onStart();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
Log.i(LOG_TAG, "Activity.onConfigurationChanged");
super.onConfigurationChanged(newConfig);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
Log.i(LOG_TAG, "Activity.onSaveInstanceState");
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
Log.i(LOG_TAG, "Activity.onRestoreInstanceState");
super.onRestoreInstanceState(savedInstanceState);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class BarFragment extends Fragment {
public BarFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.i(LOG_TAG, "Fragment.onCreateView");
View rootView = inflater.inflate(R.layout.fragment_bar, container, false);
return rootView;
}
@Override
public void onCreate(Bundle savedInstanceState) {
Log.i(LOG_TAG, "Fragment.onCreate");
super.onCreate(savedInstanceState);
}
@Override
public void onAttach(Activity activity) {
Log.i(LOG_TAG, "Fragment.onAttach");
super.onAttach(activity);
}
@Override
public void onViewStateRestored(Bundle savedInstanceState) {
Log.i(LOG_TAG, "Fragment.onViewStateRestored");
super.onViewStateRestored(savedInstanceState);
}
@Override
public void onSaveInstanceState(Bundle outState) {
Log.i(LOG_TAG, "Fragment.onSaveInstanceState");
super.onSaveInstanceState(outState);
}
@Override
public void onResume() {
Log.i(LOG_TAG, "Fragment.onResume");
super.onResume();
}
@Override
public void onStart() {
Log.i(LOG_TAG, "Fragment.onStart");
super.onStart();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
Log.i(LOG_TAG, "Fragment.onConfigurationChanged");
super.onConfigurationChanged(newConfig);
}
@Override
public void onPause() {
Log.i(LOG_TAG, "Fragment.onPause");
super.onPause();
}
@Override
public void onStop() {
Log.i(LOG_TAG, "Fragment.onStop");
super.onStop();
}
@Override
public void onDetach() {
Log.i(LOG_TAG, "Fragment.onDetach");
super.onDetach();
}
@Override
public void onDestroy() {
Log.i(LOG_TAG, "Fragment.onDestroy");
super.onDestroy();
}
}
}
关于android - Android 方向改变时执行哪些Activity 的生命周期回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31338683/
我有以下MWE function f(p) ans = zeros(p, 2) return ans end ans = f(2) ans b=ans.+1.0 ans 起初,ans是正确的,
OWIN AppBuilder“UseStatic”位从本地文件系统传送文件,这在某些情况下很方便,但我希望它从我在应用程序启动时预先填充的内存中 IDictionary 传送内容。任何人都可以指出一
我是 JavaScript 新手。 我的代码允许我列出 JSON 文档的元素及其类型,并将所有元素连接到一个字符串 donnees_types 中。 问题是 JavaScript 中的 typeof
我想在每次刷新时更改主页上的背景图像。我怎样才能做到这一点?我认为 jquery 是可能的,但我不太清楚。 感谢您对此主题的任何帮助或评论。 最佳答案 我不知道“如何”,但我找到了以下链接: http
所以我已经在这上面花了几个小时了,老实说我完全陷入困境。我写了一个 for 循环来计算整数中的数字数量,但我发现一旦我输入 10 位以上的数字,除数值就会发生变化,而且我不明白为什么。我在互联网上搜索
当我在使用表面 View 的游戏 Activity 和使用膨胀菜单的其他 Activity 之间切换时,我会收到错误消息。 日志猫: 07-13 15:15:34.464: ERROR/Android
听说很简单 R*=f; G*=f; B*=f; 其中 f 是标量值 0 .. 1.0 或更大改变亮度的方法不太正确颜色,但我找不到一些代码片段获得更好的东西(无需太多学习色彩理论)也许有人可以在这里给
如以下链接所述:- How to get the ThreadPoolExecutor to increase threads to max before queueing? 我将队列实现更改为在进入
我只显示最初提供 20 分钟 slotMinutes 的日历。我试图让用户即时更改为 10 分钟的 slotMinutes。 我有一个触发以下代码的按钮: $('#calendar').fullCal
我的问题是:我的应用程序中有一个新闻列表(UITableView)当我点击 1 个"new"时,我打开它,里面有一个后退按钮,可以让我回到列表。现在的问题是我必须在滑动时实现"new"更改,所以我制作
我面临着与 I'm trying to install psycopg2 onto Mac OS 10.6.3; it claims it can't find "stdarg.h" but I ca
需要通过为 array2 中不存在的索引设置 visible false 来从 array1 创建一个新的 array3。 在下面的示例中,我有索引 0,2。所以对于 1,3,结果数组必须具有 vis
我有一个对象,类似这样 var Egg = function(){ this.test = $(.slider .label); $('.slider').slider({
我想改变 ScrollView 的宽度。首先,我这样做了: var scrollWidthConstraint: NSLayoutConstraint! 然后设置它: scrollWidthConst
我有两个动画,一个是“过渡”,它在悬停时缩小图像,另一个是 animation2,其中图像的不透明度以周期性间隔重复变化。 我有 animation2 在图像上进行,当我将鼠标悬停在它上面时,anim
我是一个 jQuery 新手,一直在尝试添加一个脚本来更改 div onClick 的 id。 这是一个jsfiddle example . $(function accept() { $("
我正在尝试更改用户输入的字母的大小写,并将该字母的小写和大写版本存储在变量中。我已经编写了下面的代码,但它在运行时遇到了问题。有人指出是什么导致了问题吗? #include #include #i
假设我有这段代码: char num[2] = {15, 240}; char* p_num; 现在,如果我理解的一切正确,数组中的位应该像这样对齐: 00001111 11110000 我的问题是
var html = '' + count + '' + i.Description + '' + i.Priority + '' + i.Status + 'johnsmith- ' + creat
我在虚拟机上安装了 minix3,并希望我可以操纵当前的队列选择算法,以便我可以将其从优先级顺序更改为包括随机分类的低优先级作业的优先级顺序。我发现我需要更改的代码部分在 proc.c 中,具体部分是
我是一名优秀的程序员,十分优秀!