2015-02-10 71 views
-4

tl; dr:問題底部的方法是退出Android應用程序的合理方法嗎?我的方法是明智地退出Android應用程序嗎?


我維護一個Android音樂播放器應用程序。 Source

我已經收到了一些'退出按鈕集成到播放器的請求。 Issue。我爲每項活動的菜單添加了退出選項,例如

enter image description here

我已經嘗試了一些方法來退出應用程序,其中包括:

  • 發送有意向與「退出」額外給我的第一活動reference
  • 按照here所述廣播「退出」消息。

這兩種方法都存在一些問題。第一種方法從未奏效 - 我會按照示例中所述調用startActivity,但活動收到的意圖從未包含我的「退出」標誌。

第二種方法大部分時間工作,但如果我允許Android在我的揹包中銷燬活動,然後單擊退出,活動將重新啓動(顯然在收到「退出」廣播後)。我可以通過使用開發人員選項在離開視圖後立即銷燬所有活動,從而始終可以重新創建此問題。

我上解決的方法是廣播一個「退出」的消息明確啓動主屏幕:

if (id == R.id.action_exit) { 
    // I had issues just broadcasting the "exit" intent 
    // if the other activities on the stack had finished, 
    // they were re-created, presumably *after* the broadcast had been sent 
    Intent broadcastIntent = new Intent(); 
    broadcastIntent.setAction("com.smithdtyler.ACTION_EXIT"); 
    sendBroadcast(broadcastIntent); 
    // To make sure we exit, *first* send the broadcast (this makes sure the MusicPlaybackService shuts down) 
    // then launch the home screen 
    Intent startMain = new Intent(Intent.ACTION_MAIN); 
    startMain.addCategory(Intent.CATEGORY_HOME); 
    startMain.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(startMain); 
    finish(); 
    return true; 
} 

完整的源代碼,以我的退出方法是可用here

這種方法一直在測試,但我很好奇,如果有可能的用戶配置,我可以忽略這可能會導致問題。

+0

那些誰downvoted - 請你評論和解釋爲什麼? – 2015-02-10 14:14:00

回答

0

明智地退出Android應用程序嗎?

在大多數情況下,Android上的任何退出都是不合理的,也不是必需的。在你的情況下,當用戶點擊「停止」(或添加「X」按鈕以擺脫用戶需求的通知)時,最有可能移除正在進行的通知。

+0

爲什麼沒有理由或需要? – 2015-02-10 14:13:15

+0

因爲應用程序退出的概念在Android上沒有意義。如果你的應用程序被正確編寫,它將會「睡覺」,除非再次需要(除非它在背景中有意地做某些事情,比如播放音樂等)。退出應用程序釋放任何東西都沒有意義。如果事情做得對,Android會在你確實需要**時清理你的應用**。 – 2015-02-10 14:16:04

+0

就我而言,我覺得有必要避免兩步「退出」。我的應用程序有一個後臺服務(播放音樂),用戶希望能夠停止該服務並退出應用程序。如果我沒有明確退出我的應用程序,用戶將被迫1.停止服務2.按「home」。 我想給他們一個按鈕,這兩個任務。誠然,兩個步驟並不比一個糟糕,但我沒有看到退出應用程序的不利方面,除了違反Android約定。 – 2015-02-10 14:24:12