我的想法:
点击图标时,不妨都去调用MainActivity(即只设置它为主应用)。
在MainActivity的创建代码中判断是否已经登录成功,
如果没有登录成功,则立即startActivityForResult来启动LoginActivity:这种调用需要等待结果才返回。

解决方案 »

  1.   

    service中进行逻辑处理,启动相应的Activity
      

  2.   

    不是service中启动的问题。
    在service中登录后,并不会自动显示用户介面。
    这时用户可以通过service 发出的notification打开主界面
    也可以通过点击程序图标打开主界面。
      

  3.   

    你的意思是service中不能启动activity?
      

  4.   


    你是说用户点击程序图标时要根据service来选择显示MainActivity还是LoginActivity是吧?
    这样的话,可以将另一个没有界面的Activity设为主界面,bind这个service,检测其登陆状态,如果已登录,startActivity(MainActivity),否则用login界面
      

  5.   

    TO LZ:
    service,activity这些组件本来都在同一个进程里面,除非你编码的时候放在不同的进程中。
    如果你的一个进程放service,启动另外一个进程的activity,你放心,这样是不会起来两个进程,只是activity压入你当前的进程的栈。
    你可以去确认一下。
      

  6.   

    Activity的launchMode设置为singleInstance。onKeyDown中对BACK key处理,并返回true,以防止系统销毁Activity的数据。
      

  7.   

    sdk 1.5 level3测试结果
    同一个应用,只要没有显示的调用System.exit,没有kill进程。
    这种情况下,只要service没有退出,启动任何次launcher都不会开启新的进程。
    因此,用一个单例模式的对象保存系统状态是可以的。