我在我的应用中使用AsyncLoader。 我想知道onLoadFinished运行在方向更改期间我的片段的哪种方法?
我在第一次运行装载程序时显示一个对话框
@Override
public Loader<ArrayList<HashMap<String, Object>>> onCreateLoader(int id,Bundle bundle)
{
handler.sendEmptyMessage(SendRequestLoader.ShowDialog);
return loader;
}
我将listarray添加到我的适配器
@Override
public void onLoadFinished(Loader<ArrayList<HashMap<String,Object>>> loader,ArrayList<HashMap<String,Object>> list)
{
Log.e("", "---onLoadFinished---");
if(list!=null)
Log.e("before","-------adapter.size()----"+adapter.getCount());
if(list!=null)
{
int count=list.size();
for(int i=0;i<count;i++)
{
adapter.add(list.get(i));
}
}
handler.sendEmptyMessage(((SendRequestLoader)loader).getMessage());
if(list!=null)
Log.e("","-------list.size()----"+list.size());
Log.e("after","-------adapter.size()----"+adapter.getCount());
}
@Override
public void onLoaderReset(Loader<ArrayList<HashMap<String, Object>>> loader)
{
}
我在方向更改时保存了显示对话框的对话框状态。但我不确定onLaveFinished方法是否可以在onSaveInstanceState方法之后运行,或者我是否使用正确的方法来管理我的加载器?
@Override
public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
if(isshowingDialog)
outState.putBoolean("isshow",true);
else
outState.putBoolean("isshow",false);
outState.putParcelable("parcle", new Parcable(adapter.getArrayList()));
}
答案 0 :(得分:0)
根据您的评论: android:when run onLoadFinished in orientation change
当屏幕改变方向时,不要松开对话框状态,你应该做一些工作人员。
首先在AndroidManifest.xml
中设置Activity
的配置更改:
<activity
android:name="my.app.pkg.MyActivity"
android:configChanges="orientation|screenSize" >
</activity>
之后你会覆盖onConfigurationChanged
类中的Activity
方法,以便在发生这种情况时不处理任何事情:
@Override
public void onConfigurationChanged( final Configuration newConfig ) {
super.onConfigurationChanged( newConfig );
}
在此处,当用户旋转设备并更改方向时,您的Activity
将不会重新启动,并且您不会丢失异步工作人员。