Android 安卓碎片活动未收到动作屏幕关闭或动作屏幕打开

Android 安卓碎片活动未收到动作屏幕关闭或动作屏幕打开,android,android-fragmentactivity,android-broadcastreceiver,Android,Android Fragmentactivity,Android Broadcastreceiver,我想我可能遗漏了一些小细节,一旦问题解决,我会觉得自己很愚蠢,但是 我有许多活动都扩展了基类。在基类中,有一个广播接收器用于捕捉动作屏幕关闭和动作屏幕打开 这将注销用户并返回主屏幕 public class ScreenBReceiver extends BroadcastReceiver { public void autoLogout(Context context) { MainActivity ma = new MainActivity()

我想我可能遗漏了一些小细节,一旦问题解决,我会觉得自己很愚蠢,但是

我有许多活动都扩展了基类。在基类中,有一个广播接收器用于捕捉动作屏幕关闭和动作屏幕打开

这将注销用户并返回主屏幕

public class ScreenBReceiver extends BroadcastReceiver
    {
    public void autoLogout(Context context)
        {
        MainActivity ma = new MainActivity();
        ma.setLoggedIn(false);
        Intent homeIntent = new Intent(context, MainActivity.class);
        homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        FDFragmentActivity.this.finish();
        context.startActivity(homeIntent);
        }
    @Override
    public void onReceive(Context context, Intent intent)
        {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF) || intent.getAction().equals(Intent.ACTION_SCREEN_ON));
            {
            this.autoLogout(context);
            }
        }
    }
public ScreenBReceiver screenLogout;
但是,有一(1)个活动没有收到该操作。 在我的一生中,我无法理解为什么“一个活动”没有接受这个动作

我不知道还能发什么。如果需要更多信息,请说明。 清单中的所有活动都声明为相同

xml布局和活动代码都没有指定屏幕保持打开状态

还有什么呢

编辑:


您在哪里注册和取消注册接收人?你能发布基类的代码吗?哦,知道在这个活动中,屏幕会一直保持打开状态可能会很有用。它不会像其他基于Android显示设置的屏幕一样关闭。是否有任何“隐藏”或奇怪的xml布局属性会迫使屏幕保持打开状态?我正在将eclipse与adt一起使用。您应该在onResume中注册,并在onStop中注销。你不能依赖“onDestroy”
@Override
public void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    mContext = this;
    mHandler = new Handler();
    pi = new PollInterface(mContext);
    screenLogout = new ScreenBReceiver();
    IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
    IntentFilter filter2 = new IntentFilter(Intent.ACTION_SCREEN_ON);
    registerReceiver(screenLogout, filter);
    registerReceiver(screenLogout, filter2);
    .......

@Override
public void onDestroy()
    {
    super.onDestroy();
    try
        {
        unregisterReceiver(screenLogout);
        }
    catch (IllegalArgumentException iae)
        {
        // Android can't just let it pass that a receiver was already unregistered.
        // So, just ignore the daft exception it throws when unregistering twice.
        }
    }