亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1891 | 回復(fù): 0
打印 上一主題 下一主題

[Android] android——徹底關(guān)閉——應(yīng)用程序(轉(zhuǎn)) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2015-06-02 11:45 |只看該作者 |倒序?yàn)g覽
本帖最后由 nighteagle 于 2015-06-02 11:48 編輯

最近學(xué)習(xí)做android的游戲開發(fā)時(shí)候,發(fā)現(xiàn)一個(gè)關(guān)于android退出時(shí)不能徹底關(guān)閉的問題,比如:一個(gè)程序里new 出了N多個(gè)Thread,這樣在退出程序的可能不能完全關(guān)閉,最后發(fā)現(xiàn),只用finish()方法,有時(shí)候不能徹底退出,個(gè)人感覺還是要在適當(dāng)?shù)牡胤郊由希篠ystem.exit(0);
1. finish()方法

該方法可以結(jié)束當(dāng)前 Activity,但是如果你的App有很多 Activity 的話,使用該方法顯得有點(diǎn)捉襟見肘了。

另外,還有一個(gè)方法finishActivity (int requestCode) ,關(guān)于這個(gè)方法,先看看sdk的api說明吧!
  1. public void finishActivity (int requestCode)  
  2. Since: API Level 1  
  3. Force finish another activity that you had previously started with startActivityForResult(Intent, int).  
  4. Parameters requestCode  The request code of the activity that you had given to startActivityForResult(). If there are multiple activities started with this request code, they will all be finished.  
復(fù)制代碼
也許你會(huì)這樣理解 ,Activity1 通過方法 startActivityForResult (Intent, int) 啟動(dòng) Activity2,然后在 Activity2 中通過方法finishActivity (int requestCode)來結(jié)束 Activity1,但是很不幸運(yùn),不是這樣的。不信你可以Demo一把!

上面文檔說得很明白,該方法強(qiáng)制關(guān)閉通過方法 startActivityForResult (Intent, int) 啟動(dòng)的 Activity,也就是說在 Activity1 中的(重寫)方法onActivityResult(int requestCode, int resultCode, Intent data) 來接收 Activity2 返回的結(jié)果,必須在 Activity1 中調(diào)用finishActivity (int requestCode)來結(jié)束 Activity2。(一般在onActivityResult 方法調(diào)用該方法結(jié)束 Activity2)。
  1. Force finish another activity that you had previously started with startActivityForResult(Intent, int).  
  2. Parameters  
復(fù)制代碼
還有,下面兩個(gè)方法,可以參閱文檔以及源碼研究一下。
  1. finishActivityFromChild(Activity child, int requestCode)  
  2. finishFromChild(Activity child)  
復(fù)制代碼
2. killProcess

通過調(diào)用 android.os.Process 的相關(guān)方法,結(jié)束 App,示例如下:
  1. btn_exit.setOnClickListener(new Button.OnClickListener() {  
  2.     @Override  
  3.     public void onClick(View v) {  
  4.         android.os.Process.killProcess(android.os.Process.myPid());  
  5.     }  
  6.       });  
復(fù)制代碼
3. exit

我們知道,Java 的 exit(int code) 方法可以退出程序,通過查看該方法源碼,知道它實(shí)際上是調(diào)用下面的方法:
  1. Runtime.getRuntime().exit(code);  
復(fù)制代碼
示例代碼,如下所示:
  1. btn_exit.setOnClickListener(new Button.OnClickListener() {  
  2.             @Override  
  3.             public void onClick(View v) {  
  4.                 System.exit(0);//正常退出App  
  5.             }  
  6.         });  
復(fù)制代碼
接下來,我們研究一下這個(gè)方法。java.lang.System這個(gè)類的該方法jdk說明:
  1. exit  
  2.   
  3. public static void exit(int status)  
  4. 終止當(dāng)前正在運(yùn)行的 Java 虛擬機(jī)。參數(shù)用作狀態(tài)碼;根據(jù)慣例,非 0 的狀態(tài)碼表示異常終止。  
  5. 該方法調(diào)用 Runtime 類中的 exit 方法。該方法永遠(yuǎn)不會(huì)正常返回。  
  6.   
  7. 調(diào)用 System.exit(n) 實(shí)際上等效于調(diào)用:  
  8.   
  9. Runtime.getRuntime().exit(n)  
  10.    
  11. 參數(shù):  
  12. status - 退出狀態(tài)。  
  13. 拋出:  
  14. SecurityException - 如果安全管理器存在并且其 checkExit 方法不允許以指定狀態(tài)退出。  
  15. 另請參見:  
  16. Runtime.exit(int)  
復(fù)制代碼
也就是說,參數(shù)為非0值的話是異常退出程序。參數(shù)為0的話,就是正常退出。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP