2013-07-15 70 views
1

是否可以取消Android中的關機事件?基本上,如果用戶試圖關閉手機,正在運行的Android應用程序可以取消關機事件。這可能嗎?Android關機事件

回答

1

您可以註冊BroadcastReceiver來偵聽並響應android.intent.action.ACTION_SHUTDOWN意圖,但取消該事件是不可能的。您可以通過在應用程序生命週期內的某個地方註冊一個「關閉鉤子」並進行阻塞來延遲關閉。喜歡的東西:

 Runtime.getRuntime().addShutdownHook(new Thread() { 
     @Override 
     public void run() { 
      // do something at least useful 

      // and not this 
      try { 
       Thread.sleep(60000); // please don't do this... think of the unicorns 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
+0

我認爲這將有可能取消該事件,因爲我們正在開發使用手機的GPS跟蹤應用,我們希望的是,用戶將不能夠關閉手機。 – Durty

+3

我建議重新評估你的應用程序的設計,因爲即使你可以阻止用戶啓動的關機,你也無法防止電池耗盡或用戶拔出電池強制關機。 – ErikR

+1

我建議要求'RECEIVE_BOOT_COMPLETED'權限,並在手機重新啓動時重新啓動您的跟蹤器。防止用戶重新啓動設備並不好。 – twaddington