2012-11-21 114 views
3

我有一個通過清單文件註冊的廣播接收器。基本上,它啓動/關閉互聯網連接時激活。它顯示烤麪包,當它出現時,也當它熄滅。廣播接收器在後臺應用程序不活動

但是,我不希望這個Toast在我的應用程序在後臺(按下home按鈕)時顯示。我怎樣才能做到這一點?我不介意廣播是否仍然註冊,但我需要一種方式來知道我的應用程序不可見,所以我禁用了Toast。

非常感謝您

ConnectivityManager connManager = (ConnectivityManager)context.getSystemService(context.CONNECTIVITY_SERVICE); 
     NetworkInfo active_nwInfo = (NetworkInfo) connManager.getActiveNetworkInfo(); 

if(active_nwInfo == null || !active_nwInfo.isConnected()) { 
      //broadcast.putExtra("action", "no_connection"); 
      Toast.makeText(context, "No Internet Connection", Toast.LENGTH_LONG).show(); 


     }else { 
      //broadcast.putExtra("action", "new_connection"); 
      Toast.makeText(context, "Internet Connection", Toast.LENGTH_LONG).show(); 


     } 
+0

請與問題上傳你的代碼 – Lucifer

+0

增加,雖然不知道這是有幫助的 – Snake

回答

3

您可以創建一個活動例如, BaseActivity(它擴展了課程活動)。在onResume()onPause()這個Activity的方法中,你可以設置一個布爾變量,正如Anup Cowkur在他的回答中所做的那樣。

現在您可以從BaseActivity而不是Activity類擴展所有活動。所以在onReceive()函數你的BroadcastReceiver,你可以先檢查這個布爾變量,並顯示Toast只有當它是「真」。

這些鏈接是非常有幫助的:

Checking if an Android application is running in the background

Why BroadcastReceiver works even when app is in background ?

+0

感謝你的詳細程序 – Snake

1

在你的活動,在的onPause()註銷您的接收器,並在的onResume再註冊一次()

@Override 
protected void onPause() { 
    mLocalBroadcastManager.unregisterReceiver(mReceiver); 
    super.onPause(); 
} 

@Override 
protected void onResume() { 
    mLocalBroadcastManager.registerReceiver(mReceiver, filter); 
    super.onResume(); 
} 
我只是用LocalBroadcastManager用於演示

,將其更改爲適合您的接收器。

+0

的事情是我有超過15項活動和片段等等。是不是有辦法確定我的應用程序在後臺,所以我不顯示吐司? – Snake

+0

@Snake聲明布爾值以確定狀態,boolean isVisible = false,並在onPause()期間將其設置爲true。你可以做一個包含這個功能的活動,並讓你所有的活動擴展這個類 –

1

使用布爾標誌指示應用程序是否在後臺與否:

boolean appIsInBackgorund = false; 
    @Override 
    protected void onPause() { 
     appIsInBackgorund = true; 
     super.onPause(); 
    } 

    @Override 
    protected void onResume() { 
     appIsInBackgorund = false; 
     super.onResume(); 
    } 

現在,您可以檢查該標誌來確定應用程序是在後臺狀態,並確定是否顯示或不顯示你的敬酒。

如果您在多個活動中需要相同的標誌,則可以將其存儲在SharedPreferences中。

相關問題