Android 如何让活动从服务中脱颖而出
我有两个活动1)FrmHome,我有senTtoback 2)屏幕锁,我想从服务中打开。当服务调用屏幕解锁时,活动在后台打开。当我点击应用程序时,我可以看到屏幕锁定活动。我希望屏幕锁定活动应该在顶部出现,而不点击应用程序 这是服务 和处理程序Android 如何让活动从服务中脱颖而出,android,android-activity,Android,Android Activity,我有两个活动1)FrmHome,我有senTtoback 2)屏幕锁,我想从服务中打开。当服务调用屏幕解锁时,活动在后台打开。当我点击应用程序时,我可以看到屏幕锁定活动。我希望屏幕锁定活动应该在顶部出现,而不点击应用程序 这是服务 和处理程序 public class FrmHome extends ActionBarActivity { BroadcastReceiver mybroadcast = new BroadcastReceiver() { //When Event is pub
public class FrmHome extends ActionBarActivity {
BroadcastReceiver mybroadcast = new BroadcastReceiver() {
//When Event is published, onReceive method is called
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.i("[BroadcastReceiver]", "MyReceiver");
if(intent.getAction().equals(Intent.ACTION_USER_PRESENT)){
Log.i("[BroadcastReceiver]", "Screen ON");
Intent intent1 = new Intent(context, ScreenLock.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent1);
}
else if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){
Log.i("[BroadcastReceiver]", "Screen OFF");
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_frm_home);
// registerReceiver(mybroadcast, new IntentFilter(Intent.ACTION_SCREEN_ON));
registerReceiver(mybroadcast, new IntentFilter(Intent.ACTION_USER_PRESENT));
}
}
我的新活动将在后台打开。当我点击应用程序时,我可以看到新的屏幕锁定活动。但是它不会自动出现在前台您可以通过再次调用
startActivity
将活动带到前台。在正常情况下,这会启动一个新的活动实例,这可能是不可取的。您可以通过在AndroidManifest.xml
(已解释)中设置活动的launchMode
来控制这一点。例如,使用singleTop
可以解决这个问题。这样,下次您的服务调用startActivity
时,上一个实例将显示在顶部。但我想打开另一个活动(屏幕锁),我已将我的主要活动(FrmHome)发回。抱歉,您解释的场景不清楚!您可以使用startActivity
打开任何需要的活动。此函数可以从服务或活动中调用,默认情况下会创建活动的新实例并显示它。请参见我有两个活动1)FrmHome,我有senTtoback 2)屏幕锁,我想从服务中打开。当服务调用屏幕解锁时,活动在后台打开。当我点击应用程序时,我可以看到屏幕锁定活动。我希望屏幕锁定活动应该在顶部出现,而不点击应用程序