如果应用正在运行,则为GCM调用方法

时间:2014-09-17 14:57:47

标签: android listview android-activity google-cloud-messaging

我有一个以这种方式构建的应用程序:

  

活动A:登录活动B:ListView

我配置了GCM,一切都很好。但是现在我想只在App没有运行时启动Activity A,如果app正在运行,我想调用Activity B中的方法,刷新Activity B中的ListView。我怎样才能知道App或Activity B是否是运行

感谢。

1 个答案:

答案 0 :(得分:1)

好的,您只需使用sharedPreferences

即可

当您的应用在onCreate方法中运行时,请调用此方法:

PreferenceManager.getDefaultSharedPreferences(this).edit().putBoolean("running",true).apply();
当你的应用被销毁时,你的onStop或onDestroy方法

称之为

PreferenceManager.getDefaultSharedPreferences(getActivity()).edit().putBoolean("running",false).apply();

现在您可以检查您的应用是否正在运行,这意味着如果运行变量是真或假,这样:

boolean run = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("running",false);

修改

检查SharedPrefs值的服务

public class CheckService extends Service {

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    //TODO do something useful
    return Service.START_STICKY;
}

@Override
public IBinder onBind(Intent intent) {
    //TODO for communication return IBinder implementation
    return null;
}

@Override
public void onCreate() {
    super.onCreate();
boolean run = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("running",false);
 if(run) {
// do what you want if the app is running
//run actualize in your case
 }
else {
//do whatever you want again if it's not
 }
}

@Override
public void onDestroy() {
    super.onDestroy();
    Log.i(TAG, "Service destroying");
}

}