简单优雅的让你的app一直运行在后台

简单优雅的让你的app一直运行在后台_第1张图片

今天是个特殊的日子,先追忆一下张国荣先生。



下面是正题,如何让你的app一直运行在后台。
核心思想:捕获 onKeyDown的“Back”事件
其实“一直”这个词并不妥当,没有哪个用户会希望某个程序一直存在在任务栏,万一手机出现卡顿的问题那么他很可能会把锅直接甩给你,这就尴尬了。所以我们要的就是,不让用户点“返回”键直接退掉应用即可,当用户在任务栏清理掉我们的时候,也不要让service重启app就可以了。话不多说,直接上代码。

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        FragmentManager fm = getSupportFragmentManager();
        int count = fm.getBackStackEntryCount();
        if (keyCode == KeyEvent.KEYCODE_BACK) {
       
                Intent intent = new Intent(Intent.ACTION_MAIN);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.addCategory(Intent.CATEGORY_HOME);
                startActivity(intent);
                return true;//不执行父类点击事件
            }
 
   
            return super.onKeyDown(keyCode, event);//继续执行父类其他点击事件
}
代码很简单,我们捕获BACK键的点击事件,不去执行BACK键应有的操作,而是通过代码的修改,执行HOME键的操作,
那么当用户点击了BACK键想结束应用,其实是点了HOME键,都是回到了桌面。
 
   
如果你的Activity上静态添加了若干fragment的话,那么代码如下:
 
   
 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        FragmentManager fm = getSupportFragmentManager();
        int count = fm.getBackStackEntryCount();
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if (count != 0) {
            
} else { Intent intent = new Intent(Intent. ACTION_MAIN); intent.setFlags(Intent. FLAG_ACTIVITY_NEW_TASK); intent.addCategory(Intent. CATEGORY_HOME); startActivity(intent); return true; //不执行父类点击事件 }
 
   
            return super.onKeyDown(keyCode, event);
}
我们需要判断一下子,如果返回栈里有东西的话,不能让app直接回到桌面,所以返回父类的点击事件,else 返回桌面即可
 
   
 
   
 
   
 
   










你可能感兴趣的:(工作学习)