Android:不断检查数据库与排球库

时间:2016-07-18 11:49:27

标签: android login android-volley

一周前我开始学习Android和Java,现在我正在尝试创建一个登录应用程序。我正在使用Volley libary与我的服务器进行通信。我已经完成了登录部分。现在,我想要做的是每分钟检查一次数据库,看看密码或用户名是否有所改变。如果更改了数据库中的信息,应用程序将自动注销用户。

如果您可以解释我可以使用哪些工具(服务,BroadcastReceivers)以及如何实现它,因为我不是很有经验。

这就是我尝试过的失败:

loginChecker.class

public class loginChecker extends Service {
    public loginChecker() {
    }
    public static String username;
    public static String password;

    private loginChecker mInstance = this;
    public  static boolean loginCheck= true;
    public static String responseG = "failed";

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        Bundle b=intent.getExtras();
        username = b.getString("username");
        password = b.getString("password");

        final String URL = ".........";
        final RequestQueue requestQueue = Volley.newRequestQueue(mInstance);


        new Thread(new Runnable(){
            public void run() {

                do{
                    try {
                        Thread.sleep(10000);
                    } catch (InterruptedException e) {

                        e.printStackTrace();
                    }
                    StringRequest request = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
                        @Override
                        public void onResponse(String response) {
                            responseG = response;
                        }
                    }, new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {
                            responseG = "error";
                        }
                    }) {
                        @Override
                        protected Map<String, String> getParams() throws AuthFailureError {
                            HashMap<String, String> hashMap = new HashMap<String, String>();
                            hashMap.put("username", username);
                            hashMap.put("password", password);
                            return hashMap;
                        }
                    };

                    requestQueue.add(request);
                    switch(responseG){
                        case "successful" :
                            loginCheck = true;
                            break;
                        case "failed" :
                            loginCheck= false;
                            break;
                        case "error" :
                            loginCheck = false;
                            break;
                    }
                }
                while(loginCheck == true || responseG == "successful");
                }
        }).start();
        Toast.makeText(getApplicationContext(), "LOOP ENDED", Toast.LENGTH_SHORT).show();
        return START_REDELIVER_INTENT;
    }
    @Override
    public void onDestroy() {
        final Intent mainActivity = new Intent(mInstance, MainActivity.class);
        mainActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(mainActivity);
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

MainActivity.class

public class MainActivity extends AppCompatActivity {

    private RequestQueue requestQueue;
    private static final String URL = "........";
    private StringRequest request;
    private TextView text;
    private EditText userName, passWord;
    private Button loginButton;
    public MainActivity mInstance = this;

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text = (TextView) findViewById(R.id.textView);
        userName = (EditText) findViewById(R.id.userName);
        passWord = (EditText) findViewById(R.id.passWord);
        loginButton = (Button) findViewById(R.id.loginButton);
        requestQueue = Volley.newRequestQueue(this);

        final Intent profilePage = new Intent(this, Profile.class);

        loginButton.setOnClickListener(new OnClickListener() {
                                       @Override
                                       public void onClick (View v){
                                           loginButton.setEnabled(false);
                                           request = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
                                               @Override
                                               public void onResponse(String response) {
                                                   text.setText(response);
                                                   switch(response){
                                                       case "successful" :

                                                           Intent loginCheckerService = new Intent(mInstance, com.erenyenigul.apps.starter.services.loginChecker.class);
                                                           Bundle b = new Bundle();
                                                           b.putString("username", String.valueOf(userName.getText()));
                                                           b.putString("password", String.valueOf(passWord.getText()));
                                                           loginCheckerService.putExtras(b);
                                                           startService(loginCheckerService);
                                                           startActivity(profilePage);
                                                           finish();
                                                           break;
                                                       case "failed" :
                                                           Toast.makeText(getApplicationContext(), "Username or Password you entered is wrong!", Toast.LENGTH_LONG).show();
                                                           loginButton.setEnabled(true);
                                                           break;
                                                   }
                                               }
                                           }, new Response.ErrorListener() {
                                               @Override
                                               public void onErrorResponse(VolleyError error) {
                                                   Toast.makeText(getApplicationContext(), "There is a problem with our servers or you don't have internet connection!", Toast.LENGTH_LONG).show();
                                               }
                                           }) {
                                               @Override
                                               protected Map<String, String> getParams() throws AuthFailureError {
                                                   HashMap<String, String> hashMap = new HashMap<String, String>();
                                                   hashMap.put("username", userName.getText().toString());
                                                   hashMap.put("password", passWord.getText().toString());
                                                   return hashMap;
                                               }
                                           };

                                           requestQueue.add(request);
                                       }
                                   }
        );
    }
}

还有一个名为Profile.class的文件,但它是空的。我尝试了这个,但循环持续了一次巡演。即使连接正常且数据没有改变,它也会停止。

0 个答案:

没有答案