0

我的应用程序的当前实现有问题。我执行 asynctask onActivityCreated 但如果用户只是更改手机的方向,我对此不感兴趣。当用户改变手机的方向时,确保不进行不必要的异步调用的正确方法是什么?

这里有两个方法onActivityCreated 和populateList。populateList 被称为 onPostExecute()。

    @Override
public void onActivityCreated(Bundle savedInstanceState) 
{

    super.onActivityCreated(savedInstanceState);


    userControl = new UserController(getSherlockActivity());
    lv = (ListView)getView().findViewById(R.id.callforwardlist);
    lv.setTextFilterEnabled(true);

    list = new ArrayList<HashMap<String,String>>();

    callForwardList = new SimpleAdapter( 
            getSherlockActivity(), 
            list,
            R.layout.callforward_items,
            new String[] { "line1","line2" },
            new int[] { R.id.callforward_item_text, R.id.callforward_number } );

    new PullInfoTask().execute();

    lv.setAdapter( callForwardList );

    lv.setOnItemClickListener(new OnItemClickListener() {
   // *snip*

  });

}



    private void populateList() 
{

    cfinfo = userControl.GetCallForwardInfo();

    if(Integer.parseInt( cfinfo[0]) == 1)
        addItem("Viderestilling altid", cfinfo[1]);
    else
        addItem("Viderestilling altid", "Slået fra");
    if(Integer.parseInt(cfinfo[2]) == 1)
        addItem("Viderestilling ved optaget", cfinfo[3]);
    else
        addItem("Viderestilling ved optaget", "Slået fra");
    if(Integer.parseInt(cfinfo[4]) == 1)
        addItem("Viderestilling ved intet svar", cfinfo[5]);
    else
        addItem("Viderestilling ved intet svar","Slået fra");

    // Timeout Item
    addItem("Timeout",cfinfo[6]);

      callForwardList.notifyDataSetChanged();
}
4

3 回答 3

1

有一种简单的方法可以停止使用,

android:configChanges="orientation"Manifest在文件中为那个声明这个属性Activity

建议不要使用它并在代码中自己处理orientationChange。

使用onRetainNonConfigurationInstance()完整的教程,您可以浏览此博客。也可以在开发者网站上阅读这里。

于 2012-04-16T07:28:17.573 回答
0

只需将其添加到您的活动清单文件中

android:configChanges="keyboardHidden|orientation"

于 2012-04-16T07:26:13.007 回答
0

当手机改变它的方向时,当前的活动被破坏,并用新的资源(如果有的话)创建一个新的活动。这就是 Android 的默认行为。但是,您可以通过告诉虚拟机您将通过添加android:configChanges="orientation"到清单中的活动来手动处理方向更改来避免它。

于 2012-04-16T07:29:16.777 回答