如何在与服务器通信时更改方向时保留实例

时间:2014-05-01 04:56:43

标签: android

在一个片段我的应用程序与webserver通信现在我想要当方向改变时片段保留其实例但它没有发生我希望每个东西在方向期间保持持久性改变我的代码是如何可能的

    @Override
public void onCreate(Bundle savedInstanceState)
{
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setRetainInstance(true);



}
 @Override
protected void onPreExecute() 
{
    // TODO Auto-generated method stub
    super.onPreExecute();
    pDialog = new ProgressDialog(context,R.style.CustomDialogTheme);
    pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
       pDialog.setMessage("Processing...");
       pDialog.setCancelable(false); 
        pDialog.show();
}  
@Override
protected String  doInBackground(Object... params) 
{
    // TODO Auto-generated method stub


    if(type.equals("register"))
    {

        /*String url="http://waqasbrosltd.co.uk/index.php/register";
        Network network=new Network();
        Gson gson = new Gson();
        String registerData=gson.toJson(user);
        try 
        {
            answer=network.registerUser(url,registerData);
        } 
        catch (ClientProtocolException e) 
        {

        } 
        catch (IOException e) 
        {

        }
        finally
        {
            closeProgressDialog();
            closeDialogbox();

        }
    }*/

        return null;
}
public void closeProgressDialog()
{

    if (pDialog.isShowing())
    {
        pDialog.dismiss();
    }
}

 iwant my progress dialog also retain its instance but it notr retain

3 个答案:

答案 0 :(得分:0)

当方向改变时,android将破坏所有活动和片段并再次重新创建它们。这很有用,因为它还可以为您处理资源更改。例如,如果您有纵向和横向模式的不同布局文件,它会自动为您切换它们。

但您可以通过自己处理方向更改轻松地停止此过程。如果你这样做,android将不会破坏方向更改的任何东西,一切都将是持久性。如果需要更改资源,您应该自己完成!

观看此YouTube视频,了解如何操作 https://www.youtube.com/watch?v=Y5J6BURMrHQ&list=PLonJJ3BVjZW6hYgvtkaWvwAVvOFB7fkLa

答案 1 :(得分:0)

In your project manifest.xml inside activity tag put this line 
android:configChanges="keyboardHidden|orientation|screenSize"

for example:
     <activity
            android:name="com.example.MainActivity"
            android:label="@string/app_name" android:windowSoftInputMode="stateHidden" android:configChanges="keyboardHidden|orientation|screenSize">
    </activity>

and override this method in your activity

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        // TODO Auto-generated method stub
        super.onConfigurationChanged(newConfig);
    }

Hope this will help you.

答案 2 :(得分:0)

您需要ServiceService是告诉Android你想要做一些不依赖于UI的事情的方式。

问题不在于您的活动正在被销毁,而是您依靠您的活动来处理您的通信任务。除了方向更改之外,这种方法在许多其他方面都存在问题,例如当操作系统决定在需要资源时销毁后台Activity堆栈时。

交易需要由Service处理。它是Context对象,不会被方向更改破坏,也会阻止Android在需要资源时关闭您的进程。

使用Activity,数据库和Server对象实现REST架构有great Google IO lecture。 即使您没有实施整个解决方案,您也可以从讲座如何解决这个问题中学到很多东西。