java - Android Studio App Wont Run through database


The app runs, but a particular function wont. Whenever I try to login or Register an account, The Gradle console says it skipped frames and there's too much running. What I am trying to do is take in user information and send it to a database. This is the register activity code that has the problem. If i take the JSON out and just have the new activity open, it works.

 Response.Listener<String> responseListener = new Response.Listener<String>() {
                public void onResponse(String response) {
                    try {
                        JSONObject jsonResponse = new JSONObject(response);
                        boolean success = jsonResponse.getBoolean("success");
                        if (success) {
                            Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
                        } else {
                            AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this);
                            builder.setMessage("Register Failed")
                                    .setNegativeButton("Retry", null)
                    } catch (JSONException e) {

            RegisterRequest registerRequest = new RegisterRequest(username, email, password, responseListener);
            RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this);

Php code for the Register:

 $username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];

$statement = mysqli_prepare($con, "INSERT INTO data (username, email, password) VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($statement, "sss", $username, $email, $password);

$response = array();
$response["success"] = true;  

echo json_encode($response);

Register Request Code:

private Map<String, String> params;

public RegisterRequest(String username, String email, String password, Response.Listener<String> listener){
    NExt line means we are going to pass some information into the register.php
    super(Method.POST, REGISTER_REQUEST_URL, listener, null);
    This is how we pass in the information from the register to the thing, we are using a hashmap
    params = new HashMap<>();
    params.put("username", username);
    params.put("email", email);
    params.put("password", password);

Volley needs to get the data so we do a get params
Which gives us this method

public Map<String, String> getParams() {
    return params;

Does anyone know how I can solve this??? I don't know how to input Async task in this and if anyone can, please help. Is there anyway to fix this without an Async task? Thank You!




You are probably running a network request on the main thread, that is the thread that is used by the Android Framework for rendering the UI. You need to have some kind of mechanism that does the networking tasks on another thread.AsyncTask is the simplest of them all to implement, and is good for your scenario, as it is a simple task.

ExtendAsyncTask and pass your request parameters to it in aMap:

public class RegisterTask extends AsyncTask<Map, Void, Boolean> {

    protected Boolean doInBackground(Map... params) {
        Map props = params[0];  // you can access your request params here

         Do your network request here, using HttpUrlConnection or 
         HttpClient. and return a result (boolean in this example),
         which is passed to the onPostExecute method
        return false;

    protected void onPostExecute(Boolean aBoolean) {
        // This method is run on the main thread, so you can
        // update your UI after the request is completed.

You can execute this task like this:

RegisterTask task = new RegisterTask();

Check out this official Google documentation for more details: Perform Network Operations on a Separate Thread

People are also looking for solutions to the problem: PHP preg_replace escape ampersand in backreference regex


Didn't find the answer?

Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.

Ask a Question

Write quick answer

Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.

Similar questions

Find the answer in similar questions on our website.