我想知道android系统何时还原我的应用程序。
我写了一个继承自MyRadioButton
的课程RadioButton
,并且当单选按钮的状态发生变化时,我将OnCheckedChangeListener
添加为RadioButton
将回调。
在OnCheckedChangeListener
工具中,我使用了一些在OnCreate
中初始化的变量。所有这些都运行良好。
但是,有一次,我的应用程序崩溃了,因为调用了OnCheckedChangeListener
实现,它使用了一个未初始化的变量。我知道我的视图已存储,现在恢复数据。
我对这个动作非常困惑。它为什么以及何时被称为?
以下是我尝试解释此问题的代码。
public class MyFragment extends Fragment
implements RadioGroup.OnCheckedChangeListener{
private RadioGroup filterGrp;
private NetRequest netRequest;//I use the unreal Object to explain the question.
public static MyFragment newInstance() {
return new MyFragment();
}
public MyFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_bar, container, false);
filterGrp = (RadioGroup) rootView.findViewById(R.id.filter_group);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public void onViewStateRestored(Bundle savedInstanceState) {
super.onViewStateRestored(savedInstanceState);
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putChar("test",'flag');
}
@Override
public void onStart() {
super.onStart();
netRequest = new NetRequest();//NetRequest must be intialized here
filterGrp.setOnCheckedChangeListener(this);
}
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.default_filter_view:
netRequest.name;//use netRequest's member name here.
break;
}
}
}
崩溃在netRequest.name
,应用程序没问题。但是很短的时间,它崩溃了。我不想判断netRequest是否为null,我只是想知道为什么它是叫它。因为它没有被用户的交互调用。