Android 隐藏和启动程序

openkk 13年前

 由于我的项目中有需要后台运行的程序。所以想做个类似QQ手机那类的东西。隐藏主程序,并在点击状态栏图标后再次恢复到之前的页面上。

 

下面单位是监听返回按钮,用于隐藏主程序

@Override      public boolean onKeyDown(int keyCode, KeyEvent event){       if (keyCode == KeyEvent.KEYCODE_BACK) {        AlertDialog.OnClickListener lsn = new AlertDialog.OnClickListener() {                 @Override        public void onClick(DialogInterface dialog, int which) {        // TODO Auto-generated method stub         if (which == DialogInterface.BUTTON_NEGATIVE)         {          return;         }         if (false) {          //dealCopyingOnExit();         } else {         showNotification(R.drawable.logo_2,"图片旁边的文字","XXXX","内容");                   Intent i= new Intent(Intent.ACTION_MAIN);          i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);          i.addCategory(Intent.CATEGORY_HOME);          startActivity(i);             }        }      };              new AlertDialog.Builder(this).setMessage(getString(R.string.sure_exit))         .setPositiveButton("\t隐藏\t", lsn).setNegativeButton("\t取消 \t", lsn)          .create().show();                return true;       }       return super.onKeyDown(keyCode, event);      }
创建一个通知
public void showNotification(int icon,String tickertext,String title,String content){          //Notification管理器    nm= (NotificationManager)getSystemService(NOTIFICATION_SERVICE);              Notification notification=new Notification(icon,tickertext,System.currentTimeMillis());          //后面的参数分别是显示在顶部通知栏的小图标,小图标旁的文字(短暂显示,自动消失)系统当前时间(不明白这个有什么用)          //notification.defaults=Notification.DEFAULT_VIBRATE;          //这是设置通知是否同时播放声音或振动,声音为Notification.DEFAULT_SOUND          //振动为Notification.DEFAULT_VIBRATE;          //Light为Notification.DEFAULT_LIGHTS,在我的Milestone上好像没什么反应          //全部为Notification.DEFAULT_ALL          //如果是振动或者全部,必须在AndroidManifest.xml加入振动权限                          PendingIntent pt=PendingIntent.getActivity(this, 0 , new Intent(this,VncesMain.class), 0);          //点击通知后的动作,这里是转回main 这个Acticity          notification.setLatestEventInfo(this,title,content,pt);                     nm.notify(notification_id, notification);          }
最重要的来了。如果你不加下面这一句,你点击状态栏小图片时,他会重新创建一个程序。

AndroidManifest.xml 文档里面的主 activity 上加入

android:launchMode="singleTask"

singleTask:顾名思义就是堆栈中只保留一个Activity
如果桌面Activity设置了singleTask,下次再启动应用时,其他Activity都从堆栈中清除,只留下主界面的Activity,所有再次启动后打开的是主界面的Activity