次のコードを確認してください。どこが間違っているのかわかりません。アプリケーションがフォアグラウンドにあるかバックグラウンドにあるかをBroadcastrecieverで知る必要があります。しかし、Receiver では常に FALSE を返します。BASEAPPLICATION の静的変数の値が失われるのはなぜですか?? 常に FALSE を表示する理由
public class Main extends Activity {
@Override
protected void onResume() {
super.onResume();
BaseApplication.activityResumed();
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, Recevier.class);
PendingIntent pi = PendingIntent.getBroadcast(context, intentCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
am.set(AlarmManager.RTC_WAKEUP, System.currentMilliSeconds() + 2000, pi);
}
protected void onStop() {
super.onStop();
BaseApplication.activityPaused();
}
放送受信機
@Override
public void onReceive(Context context, Intent intent) {
if(BaseApplication.isActivityVisible()){
// Application is Running
}
else{
// Applicaiton is not Running
//**ALWAYS GIVING FALSE**
}
}
*ベースアプリケーション *
public class BaseApplication {
public static boolean isActivityVisible() {
return activityVisible;
}
public static void activityResumed() {
activityVisible = true;
}
public static void activityPaused() {
activityVisible = false;
}
private static boolean activityVisible;
}