我已經做了很多搜索,但沒有找到任何合適的答案。問題是這樣的:檢查Android應用程序是否在後臺?
假設我開始安卓項目有活動A,B,C和我需要捕捉事件當整個應用程序後主頁按下按鈕(無論活動)後臺。
當用戶再次啓動應用程序時,它從android維護的活動堆棧中恢復。這個活動我想抓住並顯示給用戶敬酒「你的應用程序現在是活躍的」。
當一個屏幕切換到另一個屏幕時,這個吐司顯示不可見,每當用戶再次回到應用程序時,它應該只有第一次可見。
我已經做了很多搜索,但沒有找到任何合適的答案。問題是這樣的:檢查Android應用程序是否在後臺?
假設我開始安卓項目有活動A,B,C和我需要捕捉事件當整個應用程序後主頁按下按鈕(無論活動)後臺。
當用戶再次啓動應用程序時,它從android維護的活動堆棧中恢復。這個活動我想抓住並顯示給用戶敬酒「你的應用程序現在是活躍的」。
當一個屏幕切換到另一個屏幕時,這個吐司顯示不可見,每當用戶再次回到應用程序時,它應該只有第一次可見。
我在經過幾天的努力後發現了一些東西。希望它在某些情況下會有用。
/**
* Checks if the application is being sent in the background (i.e behind
* another application's Activity).
*
* @param context the context
* @return <code>true</code> if another application will be above this one.
*/
public static boolean isApplicationSentToBackground(final Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = am.getRunningTasks(1);
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topActivity;
if (!topActivity.getPackageName().equals(context.getPackageName())) {
return true;
}
}
return false;
}
對於這個工作,你應該包括這在你的AndroidManifest.xml中
<uses-permission android:name="android.permission.GET_TASKS" />
更多細節。參考:android:how to check if application is running in background
當應用程序再次處於活動狀態時調用此方法。在那裏寫你的祝酒。
@Override
public void onResume() {
super.onResume();
}
這將顯示它不僅在主頁按鈕後。 –
是的,但我理解這樣的問題:他想在應用程序恢復時顯示敬酒。所以這是正確的方法。 –
那麼,如果你只想檢查主頁按鈕,請檢查:http://nisha113a5.blogspot.nl/但它有點危險,因爲你的應用程序可能由於幾個原因而出現在後臺,所以最好的方法是檢查是使用活動生命週期http://developer.android.com/reference/android/app/Activity.html –
當按下Home鍵,的onStop方法被稱爲在activity.So您可以在sharedpreferences設置一個boolean
那裏,也覆蓋的OnStart手動檢查,並把舉杯那裏,如果布爾值爲true 。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//set flag true in shared preferences
}
});
嘿Munish,試試這個,讓我知道.. –
你有沒有嘗試過共享偏好,通過重寫onStop ()? –
我已經嘗試過..但是根據我的要求,活動烤麪包之間的切換不應該是可見的,它應該只在應用再次進入活動狀態時纔可見。 onStop和onStart在切換活動時工作。 –
你好,正如你所說的你有3個活動A B C所以你在每一個活動中寫了這段代碼嗎? 還是有一個活動/類保持只要應用程序處於活動狀態 – 2014-04-24 15:01:51
GET_TASKS在7.0 –