Android interrupt thread handling method
- 2020-06-12 10:40:01
- OfStack
This article gives an example of how Android interrupts a thread. Share to everybody for everybody reference. The specific methods are as follows:
I am now registering for 1 user function
1. Use ProgressDialog to disable the current page (leave the back key to exit ProgressDialog)
2. Use one thread, clientThread, to perform the commit and return of data
Problem: Considering the return key operation during the ProgressDialog run, the clientThread run should be terminated.
The code below, interested friends can refer to run 1, in order to come up with a better solution.
btn_register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(doBeforeSubmit()){
try {
Log.v(TAG, "clientThread prepare01 . :"+Thread.interrupted());
clienThread=new Thread(){
public void run() {
try {
Log.v(TAG, "clientThread prepare02 . :"+Thread.interrupted());
while (!Thread.interrupted()) {
Log.v(TAG, "clientThread starting . ");
MeApiCall meApiCall=new MeApiCallImpl();
Me me=new Me();
me.setMeEmail(et_register_account.getText().toString().trim());
me.setMePwd(et_register_pwd.getText().toString().trim());
me.setMeName(et_register_nickName.getText().toString().trim());
Log.v(TAG, "clientThread data loaded . ");
meApiCall.register(me);
Log.v(TAG, "clientThread callback . ");
handler.sendEmptyMessage(AppConfig.Register.SUCCESS_MSG);
clienThread.interrupt(); // Interrupt threads
}
} catch (InterruptedException e) {
// TODO: handle exception
Log.v(TAG, "clientThread is interrupt");
}catch (Exception e) {
// TODO Auto-generated catch block
Log.v(TAG, "exception: "+e.getMessage());
handler.sendEmptyMessage(AppConfig.Register.FAIL_OTHER_MSG);
e.printStackTrace();
}
};
};
Log.v(TAG, "progressDialog prepare01 . :");
progressDialog=ProgressDialog.show(Register.this,
"",
" Is access to ....",
true,
true,
new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
// TODO Auto-generated method stub
try {
clienThread.interrupt();
Log.v(TAG, "interrupt is success!");
} catch (Exception e) {
// TODO Auto-generated catch block
Log.v(TAG, "interrupt is fail!");
e.printStackTrace();
}
}
}
);
Log.v(TAG, "clientThread prepareing_end . ");
clienThread.start();
//Log.v(TAG, "clientThread prepareing_end . ");
} catch (Exception e) {
// TODO Auto-generated catch block
Log.v(TAG, e.getMessage()+" 00");
e.printStackTrace();
}
}
}
});
I hope this article has been helpful for your Android programming.