2017-01-21 14 views
0

正在運行一個簡單的應用程序,該應用程序在打開時會打開/關閉Wifi。以下是代碼。我希望應用程序在任務執行後退出,因此我試圖在最後添加finish()或System.exit(0)。它工作正常,但當我檢查概述按鈕時,我仍然可以看到該應用程序處於運行狀態,我需要刷卡停止應用程序。 [我的意思是第三個按鈕顯示正在運行的應用程序爲縮略圖]完成後不停止的Android應用程序

import android.content.Context; 
import android.net.wifi.WifiManager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 


public class MainActivity extends AppCompatActivity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); 
    if(wifiManager.isWifiEnabled()){ 
    wifiManager.setWifiEnabled(false); 
    } 
    else{ 
    wifiManager.setWifiEnabled(true); 
    } 
    finish(); 
} 
} 
+0

爲什麼你在乎它是否繼續運行?實際上你是不是希望它出現在最近的名單中? http://stackoverflow.com/questions/3762763/how-to-remove-application-from-recent-application-list – weston

回答

1

完成將結束活動。這與結束應用程序不一樣。 Exit()並沒有真正退出應用程序,並且無論如何將是一個髒關閉,而不是一個乾淨的關閉(所以它可能會導致除了一個簡單的應用程序以外的任何問題)。 Android的確寫了不允許你這樣做。

但是,概述並不只是顯示在內存中運行的應用程序。它顯示任何正在運行或正在運行的應用程序,並且如果將它從頁面運行的應用程序中分頁出來,將以最近的意圖重新啓動它。所以,事情確實按照你自己的想法工作,或者像在傳統計算機上一樣。我也不是特別喜歡它,但你最好學習並理解它與之對抗的原因。

+0

隨機currveball。有沒有辦法殺死Android – peter

+0

中的應用程序進程不是我最後一次查看的時間(肯定是在2014年左右)。您可以通過一些工作讓自己脫離最近的菜單。但是,這並不意味着Android不會讓你在內存中,如果它足夠,並且不會重新啓動一個Activity,而不是在下次調用時重新加載(這意味着靜態變量可能不會被重新初始化但保持其舊值)。 –

0

使用finishAndRemoveTask(),從API 21開始可用。它將從最近的應用程序列表中刪除應用程序。