Ответ 1
mparaz,
Существует несколько способов сделать то, что вы хотите очень легко. Прежде чем я это сделаю, я хотел бы затронуть очень важный недостаток в вашем вопросе. Приложение не является Activity, а Activity не является приложением. Таким образом, приложение не может быть на переднем плане или на заднем плане. Это зарезервировано только для Деяний.
Быстрый пример, а затем ответьте. Ваша Служба является частью вашего Приложения. Приложение загружается, хотя Activity is not. Если ваше приложение не было загружено, ваша служба не могла работать. Я только подчеркиваю это, потому что это важная философия в Android и понимание правильного использования этих терминов, и концепции, которые их определяют, сделают это намного проще для вас в будущем.
Простое решение
Вы можете расширить объект приложения и провести простой публичный флаг в классе. Затем вы можете установить флаг в значение false в любое время, когда действие переходит к фону и истинно, когда дело доходит до переднего плана (или наоборот, конечно).
Расширение приложения:
public class MyApplication extends Application
{
static public boolean uiInForeground = false;
}
Установка флага: в вашей деятельности...
//This may be done in onStart(), onResume(), onCreate()...
//... whereever you decide it is important.
//Note: The functions here do not include parameters (that Eclipse job).
public void onStart()
{//Notice the static call (no instance needed)
MyApplication.uiInForeground = true;
}
public void onPause()
{
MyApplication.uiInForeground = false;
}
В вашей службе (где вы называете Toast)
if (MyApplication.uiInForeground)
Toast.makeText(someContext, myMsg).show();
Это действительно так просто. О да... Не забудьте сообщить манифесту, что вы распространяете Приложение. Для объявления вашего приложения в AndroidManifest.xml
<application android:name=".MyApplication" .... >
<!-- All other components -->
</application>
Надеюсь, что это поможет,
FuzzicalLogic