比如当前在我的软件里,单击了一个按钮,这个时间就是我的程序隐藏到后台,
之前的页面是什么就还是那个页面,
比如我当前是桌面,然后我运行我的程序,之后我切换到后台,页面还是显示桌面的这种如何实现?

解决方案 »

  1.   

    为什么要后台? 我想service能够满足你的需求吧.
      

  2.   

    service是后台服务了,
    比如你按下home键,程序就切换到后台了,
    但是我现在要做的是 在我的程序里按下一个按钮后,程序切换到后台,至于前台就显示我程序进来前的那个页面,不一定是HOME!
    比如我从联系人页面,进入了我的程序,然后我按了一个按钮后 我的程序切换到了后台,前台还是联系人页面!
      

  3.   

    LZ的意思就是排列Activity的堆栈列是吧  , 按下按钮后就把之前的的Acitivty放置回栈顶? 也就是把它放置在屏幕顶层
      

  4.   

    把你要调到前台的那个activity再启动就行了 你当前的这个activity就自动到后台去了
      

  5.   

    A task is a stack of activities, not a class or an element in the manifest file. So there's no way to set values for a task independently of its activities.SDK上的原话
      

  6.   

    你可以在StartActivity的时候让你的这些Activity都处于同一个Task里面,然后点击一个按钮以后把你的整个这个task放到后台.我没试过,你可以看看sdk help doc看看task相关内容,应该可以的.
      

  7.   

    对,就是 把我的ACTIVITY们 都放在一个TASK里面,然后把他放到后台!
    这个如何做?
      

  8.   


    不知道你之前的那个activity 的!
    而且这个是不应该,不需要知道的!
      

  9.   

    别人的程序,别人的Activity 我是不关心的,
    我只是把我的程序,Activity们 放到后台而已,前台是什么Activity 我不管,但必须是我之前进入程序的!就可以啦!
      

  10.   

    无解,Activity在不显示时,是会被系统暂停滴,如果长时间不用就被停止甚至释放了。SO,用Service是你最好的选择。
      

  11.   

    那你可以试试在程序里模拟按一个home键 这样就切到后台并且显示桌面了
      

  12.   

    参考Intent的flags ,点按钮跳转时可以实现类似longpress home的功能另外网上有自己实现 activity stack 的代码好像
      

  13.   

    很多APK有很多页面,返回的时候也是逐一返回啊
      

  14.   


    你的想法很好,可是不太可行啊,
    你看 我做循环返回没问题,可以是返回如何做呢?finish()?
    另外,顶层窗口不是我的程序了,我怎么才能判断这个事情呢?
      

  15.   


    返回你可以用finish,但是好像系统会回收你的资源, 
    我觉得你可以模拟一个返回按键
    KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
    onKeyDown(key.getKeyCode(), key);判断顶层窗口是不是你的程序可以这样ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    String str = am.getRunningTasks(1).get(0).baseActivity.getClassName();
    if( str.equalsIgnoreCase("zy.keytest.keytest"))
    {
       //执行返回事件
    }
    你试试看
      

  16.   

    我觉得用service比较好,把当前的activity的状态都保存,需要返回的话重新创建这个activity,并且恢复数据,activity放后台就可能被系统回收了。
      

  17.   

    SERVICE是没界面的程序,我要求想WINDOW一样可以最小化的方法,
    至于被系统回收不回收 我自有方法保证不回收!另外 service我们程序是用来保障程序数据 联网的!也就是说 程序在后台运行没问题
    只想 如何才能跳到后台?
      

  18.   

    你对android的机制了解不够吧?仔细看看android的sdk,看看activity,service,普通thread的lifecycle。注意android是怎么管理activity和service的周期的,以及他们是怎么切换的,在界面切换时activity的状态android是如何处理的。只有明白了这些,你才知道怎么实现的你的想法。-----------------------SERVICE是没界面的程序,我要求想WINDOW一样可以最小化的方法,
    至于被系统回收不回收 我自有方法保证不回收!另外 service我们程序是用来保障程序数据 联网的!也就是说 程序在后台运行没问题
    只想 如何才能跳到后台?
    ------------------------
    这里没有最小化的概念哦service也可以保障数据联网啊
    service也可以发intent调用你的activity啊为什么要留着activity?注意,你要的不是界面,是事务处理,把事务处理拿出来放到service中处理就是了,没必要在activity中,
    而且,你的这种用法本来就不是android推荐的。HeavenNash朋友说的还是很有道理的
      

  19.   

    说句不中听的,你的设计理念有点混乱啊要明白自己是要什么结果,而不是必须通过“某种途径”达到这种结果。况且,“某种途径”还不一定正确。比如你这里用activity去处理长期事务,这在设计上就存在问题
      

  20.   


    看一下QQ,在按BACK的时候,就可以到后台运行!
    我是要实现这个效果!
    而且目前已经小成!
      

  21.   

    那你启动activity后手动模拟一个home键事件不就行了?
      

  22.   


    我们讨论了这么多,你也没仔细看。模拟HOME,只能到桌面, 如果我是从别的程序 进入我的程序呢? 还能BACK到 桌面啊?!
    那样体验很差啊!
      

  23.   

    有那么复杂?
    “All the activities in a task move together as a unit. The entire task (the entire activity stack) can be brought to the foreground or sent to the background.” 你的activities都在一个task里的话,那试试Activity.moveTaskToBack(true);
      

  24.   


    请问这种如何实现?
    我就是想实现这样一种功能,比如我有个数组,在按返回键之前是显示第2个元素,这时我用Service监控系统的一个广播,收到广播后我想启动我原来的Activity,显示数组里面的第三个元素....也就是我想让我的Activity重新回到之前的状态....
      

  25.   

    两个月了还没解决...
    想用Service呢就看看AppDemo里面Service的例子。
    不想用,而且你的程序在任何地方都能启动,这个就NB了,
    有两种可能,你是定制Firmware内置程序,使用手机按键硬启动。
    另外一种就是利用Intent启动。利用Intent启动呢,你的程序退出之后,向之前调用你的程序返回Result。
    关闭后系统会保留之前的页面。这个当然隐藏与否也无关紧要了。
    我怀疑楼主对自己面临的问题迷迷糊糊。
    当然也不排除楼主是大牛,做小菜所不能仰望的东西。
    祝楼主早日成功,完成悖论和永动机的设计。
      

  26.   

    不是我不清醒,是你还没明白,
    就做一个类似QQ 按BACK键时候,将QQ程序放入后台,前途显示 进入QQ前的页面!
    如果你还不清楚的话,装一个QQ跑一下就 一目了然了!
      

  27.   

    是这样的,你可以试试,重写activity的moveTaskToBack(boolean nonRoot)方法,就可以把你的程序放到后台运行了,你可以再改改,比如你可以监听某个键的事件,在事件里面调用这个方法,应该对你有帮助。
      

  28.   

    QQ的back键是退出,并且出confirm的对话框。
    按HOME键是隐藏到后台,但是有一个Service在运行,抛出一个Notification。
    点击Notification的时候切换到程序。没什么难的啊,不知道你哪里实现不了。
      

  29.   

    大哥 这种方法怎么判断 多个activity程序的情况啊
      我现在也急需解决 这个问题啊 还有packageinfo 怎么用啊
      

  30.   

    创建一个server并且在onstart启动一个线程,并且可以在线程中做其他事情,如不断的发送广播,并且广播中设置过滤器,满足且进入广播做我们的事情。
      

  31.   

    public class MyRequest extends Request
    {
        private Vector<String> vector = null;
        
        public MyRequest(String nameSpace, String methodName, String interfaceUrl, Vector<String> vector)
        {
            super(nameSpace, methodName, interfaceUrl);
            this.vector = vector;
        }
        
        public SoapSerializationEnvelope createRequest()
        {
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            SoapObject request = createSaopObject();
            Class<?> rsquestClass = null;
            try
            {
                rsquestClass = Class.forName("com.MyRequestBean");
                envelope.addMapping(nameSpace, "MyRequest", rsquestClass);
                SoapObject object = new SoapObject(nameSpace, "MyRequest");
                object.addProperty("account", vector.get(0));
                request.addProperty("MyRequest", object);
            }
            catch (ClassNotFoundException e)
            {
            }
            envelope.bodyOut = request;
            envelope.headerOut = createHeader();
            return envelope;
        }
    }
      

  32.   

    public class MyRequestBean implements KvmSerializable
    {
        private String account;    public String getAccount()
        {
            return account;
        }
        
        public void setAccount(String account)
        {
            this.account = account;
        }
        
        
        public Object getProperty(int arg0)
        {
            Object result = null;
            switch (arg0)
            {
                case 0:
                    result = getAccount();
                    break;
                
                default:
                    break;
                
            }
            return result;
        }
        
        public int getPropertyCount()
        {
            return 1;
        }
        
        public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo info)
        {
            switch (arg0)
            {
                case 0:
                    info.name = "account";
                    info.type = PropertyInfo.STRING_CLASS;
                    break;
                
                default:
                    break;
            }
        }
        
        public void setProperty(int arg0, Object arg1)
        {
            switch (arg0)
            {
                case 0:
                    setAccount((String)arg1);
                    break;
                
                default:
                    break;
                
            }
        }
        
    }
      

  33.   

    明显qq是用Service实现的,楼主你想复杂了。
      

  34.   


    你还是不明白 Service能帮助你后台运行,那么如何后台运行的?
    就比如windows我们点击 最小化,程序后台了!
    那么ANDRPID 我们怎么做呢?
      

  35.   

    我们 实现的是 一个返回桌面事件!但QQ不是,QQ是堆栈返回!
      

  36.   


    我们 实现的是 一个返回桌面事件!但QQ不是,QQ是堆栈返回!
      

  37.   


    public static void backToDesk(Activity activity){
    Intent MyIntent = new Intent(Intent.ACTION_MAIN);
    if(Utility.getMobileModel().equalsIgnoreCase(SysConstants.PHONE_TYPE_LEPHONE_100) 
    || Utility.getMobileModel().equalsIgnoreCase(SysConstants.PHONE_TYPE_LEPHONE_101))
    {
    MyIntent.addCategory("android.intent.category.DESK_DOCK");
    }
    else
    {
    MyIntent.addCategory(Intent.CATEGORY_HOME);
    }
    activity.startActivity(MyIntent);
    // activity.getParent().moveTaskToBack(true);
    }
      

  38.   


    非常非常感谢,哈哈,这个问题我弄了很久了,你对我这种刚入门的选手太有耐心了感动ing!
      

  39.   

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
    moveTaskToBack(true);
    return true;
    }
    return super.onKeyDown(keyCode, event);
    }
      

  40.   


    Utility是什么类?怎么没有提示导包,是自己写的类吗?
      

  41.   

    恩在2.3.5上亲测,moveTaskToBack(true)就可以了,lz给的方法实际上是模拟Home键,而QQ的返回就类似于moveTaskToBack(true)
      

  42.   

    好东西!原来qq是用service实现的...今天才知道.
      

  43.   

    看下一phone app的返回键的处理就知道了* We never *really* finish() the InCallScreen, since we don't want to
         * get destroyed and then have to be re-created from scratch for the
         * next call.  Instead, we just move ourselves to the back of the
         * activity stack.
         *
         * This also means that we'll no longer be reachable via the BACK
         * button (since moveTaskToBack() puts us behind the Home app, but the
         * home app doesn't allow the BACK key to move you any farther down in
         * the history stack.)
         *
         * (Since the Phone app itself is never killed, this basically means
         * that we'll keep a single InCallScreen instance around for the
         * entire uptime of the device.  This noticeably improves the UI
         * responsiveness for incoming calls.)
         */
        @Override
        public void finish() {
            if (DBG) log("finish()...");
            moveTaskToBack(true);
        }