我使用GCM Cloud Listener Service从我的服务器捕获一些通知,并通过NotificationCompat
出于某种原因,如果我的片段(带有一些可更新项目的列表)现在显示,我不知道如何显示我的通知。
最好的检查方法是从CloudListenerService
开始查看我的片段吗?
我想我可以使用Application
来存储片段的当前状态:
在应用程序类中:
public class ClientApplication extends Application {
public static WeakReference<Fragment> currentFragment;
在我的Fragment
:
@Override
public void onResume() {
ClientApplication.fragment = new WeakReference<>(this);
super.onResume();
}
@Override
public void onPause() {
ClientApplication.fragment = null;
super.onPause();
}
在我的Cloud listener service
:
if(ClientApplication.fragment.get() != null && ClientApplication.fragment.get().isVisible()) {
dosth();
答案 0 :(得分:5)
: 添加这个
public MyFragment extends Fragment {
public static boolean active = false;
@Override
public void onStart() {
super.onStart();
active = true;
}
@Override
public void onStop() {
super.onStop();
active = false;
}
在服务中:
if (MyFragment.active) {
//DO STUFF
}
}
答案 1 :(得分:0)
您可以使用应用的活动或片段生命周期来跟踪您的活动/片段。例如,如果您的活动/片段在SharedPreference中可见或使用类变量,则可以保存。
另一种方法是向ActivityManager询问您的Activity当前是否正在运行,或者询问FragmentManager是否有可见的特定片段:
MyFragmentClass f = (MyFragmentClass) getSupportFragmentManager().findFragmentByTag("youFragmentTag");
if (f != null && test.isVisible()) {
// It's Visible
}
else {
// No visible
}