Android中斷線程的處理方法
本文實例講述了Android中斷線程的處理方法。分享給大家供大家參考。具體方法如下:
我現(xiàn)在對一個用戶注冊的功能
1.用ProgressDialog將當前頁面設成不可操作(保留返回鍵 退出ProgressDialog)
2.用一個線程clientThread執(zhí)行數(shù)據(jù)的提交和返回
問題:考慮到ProgressDialog運行過程中,返回鍵的操作,應該終止clientThread的運行。
代碼如下,感興趣的朋友可以參考運行一下,以便得出更好的解決辦法。
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(); //中斷線程
}
} 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,
"",
"正在獲取....",
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();
}
}
}
});
希望本文所述對大家的Android程序設計有所幫助。
相關文章
android中實現(xiàn)editext搜索完成自動關閉軟鍵盤
在Android應用開發(fā)中,經(jīng)常會遇到需要在EditText中輸入內(nèi)容,并通過搜索按鈕進行搜索的場景,通常情況下,當用戶點擊搜索按鈕后,我們希望關閉軟鍵盤以提供更好的用戶體驗,本文將介紹如何在Android中實現(xiàn)EditText搜索完成后自動關閉軟鍵盤的功能2023-10-10android中Intent傳值與Bundle傳值的區(qū)別詳解
本篇文章是對android中Intent傳值與Bundle傳值的區(qū)別進行了詳細的分析介紹,需要的朋友參考下2013-05-05Android?數(shù)據(jù)結(jié)構(gòu)全面總結(jié)分析
這篇文章主要為大家介紹了Android?數(shù)據(jù)結(jié)構(gòu)全面總結(jié)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12android studio編譯jar包或者aar包的方法教程詳解
這篇文章主要介紹了android studio編譯jar包或者aar包的方法教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03Android ListView監(jiān)聽滑動事件的方法(詳解)
下面小編就為大家?guī)硪黄狝ndroid ListView監(jiān)聽滑動事件的方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03基于Android CALL && SendMes Test的相關介紹
本篇文章小編為大家介紹,Android CALL && SendMes Test 需要的朋友參考下2013-04-04Android Studio使用Kotlin時,修改代碼后運行不生效的解決方法
這篇文章主要介紹了Android Studio使用Kotlin時,修改代碼后運行不生效的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03