0

アプリの現在の実装に問題があります。非同期タスクonActivityCreatedを実行しますが、ユーザーが電話の向きを変更するだけの場合、これを実行することに興味はありません。ユーザーが電話の向きを変更したときに、不要な非同期呼び出しが行われないようにする適切な方法は何ですか?

onActivityCreatedとpopulateListの2つのメソッドを次に示します。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のデフォルトの動作です。android:configChanges="orientation"ただし、マニフェストのアクティビティに追加して方向の変更を手動で処理することをVMに通知することで、これを回避できます。

于 2012-04-16T07:29:16.777 に答える
0

これをアクティビティのマニフェストファイルに追加するだけです

android:configChanges = "keyboardHidden | orientation"

于 2012-04-16T07:26:13.007 に答える