2012-04-16 46 views
0

我的应用程序当前实现有问题。我在onActivityCreated上执行asynctask,但如果用户只是简单地改变手机的方向,我并不感兴趣。当用户改变手机的方向时,确保不会进行非常见的异步调用的正确方法是什么?应用程序每次定向开关执行AsyncTask

以下是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(); 
} 

回答

1

有一个简单的方法来停止使用,

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

值得推荐的是,不要在代码中使用this并处理orientationChange。您可以通过this Blog。开发人员网站上的read here

+0

谢谢。博客文章非常有帮助。 – CodePrimate 2012-04-16 08:03:09

+0

看起来我在这一个跳上了枪。 onRetainNonConfigurationInstance()不存在,因为我试图覆盖它的类扩展了Fragment。建议? – CodePrimate 2012-04-16 08:25:51

0

只是在manifeast文件中添加这为您的活动

机器人:configChanges = “keyboardHidden |定位”

0

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

相关问题