Android片段活动甚至没有收到ACTION_SCREEN_OFF或ACTION_SCREEN_ON

时间:2017-03-29 17:14:45

标签: android android-fragmentactivity android-broadcastreceiver

我想我可能会遗漏一些小细节,一旦解决这个问题会觉得非常愚蠢......但

我有很多活动都扩展了基类。在基类中有一个广播接收器来捕获ACTION_SCREEN_OFF和ACTION_SCREEN_ON。

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

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布局和活动代码都没有指定屏幕保持开启状态。

还有什么可以吗?

编辑:

@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.
        }
    }

0 个答案:

没有答案