Android 应用程序正在运行时的GCM调用方法
我有一个这样构造的应用程序:Android 应用程序正在运行时的GCM调用方法,android,listview,android-activity,google-cloud-messaging,Android,Listview,Android Activity,Google Cloud Messaging,我有一个这样构造的应用程序: boolean run = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("running",false); 活动A:登录活动B:列表视图 我配置了GCM,一切正常。但现在我只想在应用程序未运行时启动活动A,如果应用程序正在运行,我想调用活动B中的方法刷新活动B中的列表视图。如何确定应用程序或活动B是否正在运行 谢谢。好的,您只需使用SharedReference即可 当应用程序在on
boolean run = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("running",false);
活动A:登录活动B:列表视图
我配置了GCM,一切正常。但现在我只想在应用程序未运行时启动活动A,如果应用程序正在运行,我想调用活动B中的方法刷新活动B中的列表视图。如何确定应用程序或活动B是否正在运行
谢谢。好的,您只需使用SharedReference即可 当应用程序在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");
}
}广播接收器。。。一个“已创建”/“已在清单中注册”(又名始终已注册)第二个在活动B中创建并注册(并在暂停此活动时注销)…我猜“未运行”一词可以根据OP进行解释,但我打赌他的意思是当应用程序不在前台时。在这种情况下,onDestroy不会立即被调用,而是会在以后调用。所以,若应用程序不在前台意味着不运行,那个么它就不会运行work@tyczj但是他可以使用onStop方法,然后他可以,但是他必须把它放在他的所有活动中,因为当你从一个活动导航到另一个活动时,onStop会被调用,应用程序仍在运行,但如果您仅在一个活动中使用onStop,则不会根据共享首选项运行。不是说你错了,我只是提供了更多的信息,让OP意识到可能存在的问题。这是一个非常好的主意,我认为它是有效的。在活动A中,我为活动A添加了一个布尔真值,在活动B中,我为活动B添加了一个布尔真值,因此我可以查看活动A或B是否正在运行或两者都未运行(在这两个onDestroy中,我都添加了假值,因为当B启动时,A会被销毁。好主意!但是GCM会创建一个带有PendingEvent的通知。我如何根据SharedReferences进行通知操作?类似于OnClickListener…’的编辑,并解释PendingEvent