Java 我的应用程序跳过AsyncTask.execute()并崩溃
这是我的onCreate方法,问题是应用程序显示toast“Finish!”但它不执行Java 我的应用程序跳过AsyncTask.execute()并崩溃,java,android,android-asynctask,Java,Android,Android Asynctask,这是我的onCreate方法,问题是应用程序显示toast“Finish!”但它不执行li.execute(电子邮件、密码)和它崩溃。就这样 我希望应用程序能够执行li.execute(电子邮件、密码)第一个 PS:loginBackgroundWorker是一个扩展了AsyncTask的类,它有onPreExecute()和doInBackground()和onPostExecute()方法。 应用程序没有显示任何错误或警告,但在模拟器中崩溃 代码如下: protected void onCr
li.execute(电子邮件、密码)代码>和它崩溃。就这样
我希望应用程序能够执行li.execute(电子邮件、密码)代码>第一个
PS:loginBackgroundWorker是一个扩展了AsyncTask
的类,它有onPreExecute()
和doInBackground()
和onPostExecute()
方法。
应用程序没有显示任何错误或警告,但在模拟器中崩溃
代码如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
li = new loginBackgroundWorker(LoginActivity.this);
//loginBackgroundWorker is a class that extends AsyncTask
EditTextEmail =(EditText) findViewById(R.id.emailField);
EditTextPassword =(EditText) findViewById(R.id.passwordField);
loginButton = (CardView) findViewById(R.id.loginButton);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Email = EditTextEmail.getText().toString().trim();
Password = EditTextPassword.getText().toString().trim();
li.execute(Email,Password);
Toast.makeText(LoginActivity.this,"Finish !",Toast.LENGTH_LONG).show();
}
});
}
这里是AsyncTask类(我认为这些函数中的内容对您并不重要)
AsyncTask
的实例只能运行一次
如果要重用AsyncTask
,必须初始化loginBackgroundWorker
的新实例并运行它
将您的loginBackgroundWorker
初始化移动到您的OnClickListener。onClick
handle显示您的AsyncTask
和stacktrade dudeOK我将显示整个AsyncTask类以及您的异常stacktrace是什么?好的,我现在发布了我的stacktrace无法执行任务:任务已经在运行。
您正在运行吗在别处启动任务,或者您可能正在多次单击该按钮。我这样做时,它会在多次单击后崩溃,这是我的Stacktrace每次单击时都会显示此错误E/Surface:getSlotFromBufferLocked:unknown buffer:0x7f811727d2e0,然后崩溃-----------崩溃开始05-26 15:27:05.13720334-20334/com.example.zaariou.blacklist E/AndroidRuntime:致命异常:主进程:com.example.zaariou.blacklist,PID:20334 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String java.lang.String.trim()”
public class loginBackgroundWorker extends AsyncTask<String,String,String> {
Context context;
public String email;
public String password;
public static final String login_url="http://192.168.0.104/login.php";
public loginBackgroundWorker(Context context) {
this.context = context;
}
@Override
public void onPreExecute() {
//Toast.makeText(context,"preExecute",Toast.LENGTH_LONG).show();
}
@Override
public String doInBackground(String... params) {
try {
email = params[0];
password = params[1];
URL url = new URL(login_url);
HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
OutputStream outputStream = httpURLConnection.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
String post_data = URLEncoder.encode("email","UTF-8")+"="+URLEncoder.encode(email,"UTF-8")+"&"
+URLEncoder.encode("password","UTF-8")+"="+URLEncoder.encode(password,"UTF-8");
bufferedWriter.write(post_data);
bufferedWriter.flush();
bufferedWriter.close();
outputStream.close();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1"));
String result="";
String line="";
while((line = bufferedReader.readLine())!= null) {
result += line;
}
bufferedReader.close();
inputStream.close();
httpURLConnection.disconnect();
return result;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
public void onPostExecute(String result) {
Toast.makeText(context,"Onpost",Toast.LENGTH_LONG).show();
String r=result.trim();
Boolean aBoolean = true;
if (result.equals("1"))
{
Toast.makeText(context,"Bien Connecté",Toast.LENGTH_LONG).show();
aBoolean = false;
}
else if (result.equals(""))
r = "Login ou mot de passe incorrect";
if (aBoolean)
{
Toast.makeText(context,r,Toast.LENGTH_LONG).show();
}
}
}
--------- beginning of crash
05-26 14:56:24.023 14756-14756/com.example.zaariou.blacklist E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.zaariou.blacklist, PID: 14756
java.lang.IllegalStateException: Cannot execute task: the task is already running.
at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:593)
at android.os.AsyncTask.execute(AsyncTask.java:551)
at com.example.zaariou.blacklist.LoginActivity$1.onClick(LoginActivity.java:58)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)