在我的Android应用程序中,我已将一些图像和数据从互联网加载到可扩展列表视图中。我已经按如下方式处理了方向更改。
@Override
public Object onRetainNonConfigurationInstance() {
isOrentationChnged=true;
final Object data = arrGroupelements;
return data;
}
在我的onCreate()
中 if(!isOrentationChnged){
new LongRunning().execute();
}else{
if((String[][])getLastNonConfigurationInstance()==null){
new LongRunning().execute();
}else{
arrGroupelements= (String[][]) getLastNonConfigurationInstance();
expList.setAdapter(new ExpAdapter(cont));
}
}
isOrentationChnged=false;
LongRunning是一个AsynacTask,曾经用来从互联网上获取数据,并且在方向改变之后加载以前加载的数据(没有再次从互联网上获取新数据),但它非常慢。有没有其他方法可以做到这一点有效??
答案 0 :(得分:2)
最后,我得到了一种简单的方法来加快活动中的方向变化。
<强> IDEA:强>
每个方向更改都会重新创建解决方案的活动,您可以通过在应用程序的清单文件中向活动标记添加以下代码行来避免活动重新创建。
android:configChanges="orientation|keyboardHidden|screenSize"
以上行避免了方向更改后的活动重新创建,因此您的活动对方向更改的响应速度会更快。
答案 1 :(得分:0)
根据David的说法,除非 isOrentationChnged 设置为静态,否则重新创建活动时它将始终为false。
你真的不需要那个变量,只需在onCreate中执行此操作:
arrGroupelements = (String[][]) getLastNonConfigurationInstance();
if (null==arrGroupelements){
new LongRunning().execute();
} else {
expList.setAdapter(new ExpAdapter(cont));
}
这样,如果正在重新创建活动,那么将使用您的数据,否则将运行长时间运行。
顺便说一句,我没有看到你在Adapter构造函数中使用arrGroupelements。