在活动之间显示锁屏
我致力于可以启动其他Android应用程序的自助服务终端应用程序。它在锁屏上运行。我看到的问题是锁定屏幕在活动之间短暂显示。我们必须保持平板电脑锁定,因此解锁不是一种选择。在活动之间显示锁屏
我已经能够用超级简单的情况重现这一点。这两项活动几乎完全相同。该应用程序是设备管理员,可以显示在键盘上方。我也尝试过不使用finish()
,但这并没有解决问题。
public class MainActivity extends Activity {
private Handler h = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bneg1 = (Button) findViewById(R.id.bneg1);
bneg1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
h.post(new Runnable() {
@Override
public void run() {
Intent i = new Intent(MainActivity.this, SecondActivity.class);
startActivity(i);
finish();
}
});
}
});
}
}
如何在没有它的情况下首先启动其他活动?
我怎样才能启动其他活动没有它首先简要显示 锁屏?
实现此目的的更简单方法是在启动activity-1
之前运行虚拟(纯视图)活动。这样,当你完成activity-1
,dummy-activity
将接管,其次是activity-2
进入前台。
您将(很可能)也需要告诉系统不要提供窗口动画。通过添加到您的应用程序主题:
<item name="android:windowAnimationStyle">@null</item>
这只是可能的工作。我会回顾我的发现。 – Randy
所以我没有真正测试过这个,但是:根据之前的测试,这不起作用。我完全删除了两个活动中的finish()。这会导致与虚拟活动相同的效果,因为我仍然会在堆栈中执行活动。锁屏仍然会短暂显示。 – Randy
@Randy我建议这种方法没有尝试第一手。道歉。它不起作用。我还尝试过了什么:在启动活动2之前显示一个屏幕大小的PopupWindow与'TYPE_TOAST'(在之后解雇它) - 不起作用。使用设置了TYPE_SYSTEM_ALERT的窗口管理器的“addView(...)'添加屏幕大小的不透明视图不起作用。 – Vikram
您是否尝试过FLAG_ACTIVITY_NO_ANIMATION,并在startActivity()后使用overridePendingTransition(0,0)。这使得新的活动不再“滑入”,而是立即启动它们。不知道这是修复,但值得一看。 – zgc7009
我已经试过了。它似乎没有任何区别。 – Randy