欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android launcher中模拟按home键的实现

程序员文章站 2023-11-24 11:34:40
android launcher中模拟按home键的实现 intent mhomeintent = new intent(intent.action_main);...

android launcher中模拟按home键的实现

intent mhomeintent = new intent(intent.action_main); 
    mhomeintent.addcategory(intent.category_home); 
    mhomeintent.addflags(intent.flag_activity_new_task 
            | intent.flag_activity_reset_task_if_needed); 
   getapplicationcontext().startactivity(mhomeintent);   // 要用getapplicationcontext

     android中,如果想把stack中的某个activity movetasktofront,可以定义一个broadcastreceiver接收某种类型的broadcast,并在onreceive中start该activity。但是需要注意的是,startactivity前面的context参数问题。

android的activity中不能使用startacitivity来将自己提前到stack的前面,所以这个onreceive中的startactivity的context不能是activity。

另外如果该broadcastreceiver是动态注册的(dynamic register),此时在onreceive中传入的context的参数就是这个activity,也不能使用。

对付上面这个问题比较有效的办法,就是不要直接使用这个context,而是使用context.getapplicationcontext(),这样就可以实现movetasktofront了。

与movetasktofront相对应的是movetasktoback,这个相对比较简单,activity已经提供了movetasktoback方法。当时需要注意的是,一旦调用这个方法,该activity所在的task将会被整体搬迁到stack的最底端,需要特别注意。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!