是对AsyncTask的纵向/横向过渡效果

时间:2014-02-12 06:16:39

标签: android android-asynctask landscape-portrait

我开发了一个与wi-fi连接的应用程序。在该应用程序纵向/横向转换中,在旋转手机并中断套接字连接时重新启动活动。然后我将肖像添加到AndroidManifest.xml文件,然后问题已经解决。我想知道这是对Async-Task的纵向/横向过渡效果吗?

<activity
android:name="login"
android:label="@string/login_title"
android:configChanges="orientation|screenSize" >
</activity>

Login.java文件

    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;

    public class login   extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.login);
            try{


             Button buttonSignin = (Button) this.findViewById(R.id.btnSignIn);
//This is the place gives nullpointerException
             buttonSignin.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {

                        EditText user=(EditText) findViewById(R.id.txtUserName);
                        EditText pass=(EditText) findViewById(R.id.txtPassword);

                        if(user.getText().toString()== "")
                        {

                            return;
                        }

                        else if(pass.getText().toString()== "")
                        {

                            return;
                        }
                        else
                        {
                            LoginRequest reqs_login = new LoginRequest(login.this,login.this);
                            reqs_login.where="Login_Data";
                            reqs_login.title="Login";
                            reqs_login.username=user.getText().toString();
                            reqs_login.password=pass.getText().toString();

                            reqs_login.execute();
                        }

                    }
                });

            } catch (NullPointerException e) {
                e.printStackTrace();
                //Toast.makeText(getBaseContext(), "Error:1 on uplod file", Toast.LENGTH_LONG).show();

            } catch (Exception e) {
                e.printStackTrace();
                //Toast.makeText(getBaseContext(), "Error:2 File may be already exists", Toast.LENGTH_LONG).show();

            }

        }

        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);

        }


    }

3 个答案:

答案 0 :(得分:0)

在AndroidManifest.xml活动

中使用此功能
  

机器人:configChanges = “取向|屏幕尺寸”

在AsyncTask中为我工作

答案 1 :(得分:0)

我猜答案是否定的,因为异步任务(后台任务)一旦开始执行inBackground,它将不会停止,直到在后台完成该代码的执行。无论应用程序处于哪个状态,即使应用程序已最小化,也不会影响异步任务。因此,更改横向/纵向模式不会影响AsyncTAsk(InBackground)方法。希望这会有所帮助...

答案 2 :(得分:0)

在设备配置更改中保留活动对象(如运行线程,套接字和AsyncTasks)的最佳方法是什么?

Deprecated: Override onRetainNonConfigurationInstance()

跨活动实例传输活动对象只是在onRetainNonConfigurationInstance()中返回活动对象并在getLastNonConfigurationInstance()中检索它。从API 13开始,这些方法已被弃用,以支持更多Fragment的setRetainInstance(true/false)

Recommended: Manage the Object Inside a Retained Fragment

Fragment#setRetainInstance(true)允许我们绕过这个破坏和重新创建的循环

有关详细信息,请查看以下内容

Handling Configuration Changes

希望这会对你有所帮助。