我有一个活动,当屏幕方向改变时,活动会执行一些代码。因此,如果用户决定来回翻转屏幕,则后面的代码将会中断。我想通过try / catch捕获它,并且在catch中我想要重新启动活动,或者如果在它之前更容易返回一步到活动。我现在成功地抓住了这个例外,但我真的不知道该怎么办。
如果试过这个:
OnDestroy();
StartActivity(typeof(ImageGridActivity));
或只是
Finish();
所以希望只是跳回一项活动。但事实并非如此。 Plz帮忙!
答案 0 :(得分:0)
当屏幕方向改变时,您的旧活动将进入(屏幕外),并开始新的活动。如果未引用旧活动,则将对其进行垃圾回收,否则仍会占用内存。 onCreate()方法有一个Bundle参数;如果它不为空,则表示重新启动活动。请参阅onSaveInstanceState()。
如果您在后台执行某项操作,则该任务不得归活动所有(来自 MVC 视点的 Controller ),它应属于模型。您可以将引用存储在全局变量中,也可以按照onRetainNonConfigurationInstance()中的建议进行操作(还有很多要阅读的内容)。
另请参阅:Is AsyncTask really conceptually flawed or am I just missing something?