我开发了一个与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);
}
}
答案 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
希望这会对你有所帮助。