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