请教android开发的问题

Bllose 发布于 2014/03/10 14:27
阅读 218
收藏 0

华为云11月刊推送:DIY微信问答机器人,高性能计算代码的20个技巧!>>>

最近我想实现悬浮图标点击返回主程序的功能。

具体的实现方法是在主程序中的Switch被开启的时候 开启一个Service,通过Service建立一个float窗口,这个窗口我就用一个小图片显示,这样就做成了一个悬浮图标的效果。

但是当我想通过点击图标的方法启动原来的activity的时候,发现我只会用startActivity()这个方法。当然这可以实现打开原来的activity,但新打开的Activity上的Switch却处于原始状态(开启悬浮;但是实际上我已经开启了,应该显示:关闭悬浮)。后来我查看了一下android的文档,发现这是启动activity的机制导致我每次开启actvity系统都会自动生成一个新的activity。


之后我尝试了很多方法,比如设置Activity的task为 TopOnly之类的。最后我直接将英文文档从头到尾看了一遍,发现task并不适合解决我的问题。应该有某种方法可以控制activity的生命周期,直接将现有的处于PAUSE 或者 STOP状态的Activity执行onResumed()方法。
再之后我注意到了Service和其包括的AIDL。但是我不清楚这个是不是能够解决我的问题。所以请教一下各位,觉得我这个问题应该学习哪部分的内容。多谢

加载中
0
Romen
Romen
A start B,然后B finished之后,A不是会执行 onResumed么?
B
Bllose
回复 @错II过 : 多谢了
错II过
错II过
回复 @Bllose : 哎呀 实在抱歉,我没发出来,幸好加了个书签。。 http://blog.csdn.net/stevenhu_223/article/details/8504058
B
Bllose
回复 @错II过 : 额。。我看不到网址呀。额 不好意思 ,不太会用这个论坛
错II过
错II过
回复 @Bllose : 我这边网上找了一个攻略 你看一下把 ,你们启动这个悬浮框的方法不同。
B
Bllose
回复 @Romen : 不是通过系统的返回按钮,而是通过我的悬浮按钮
下一页
0
hawkyoung
hawkyoung
你的思路基本是对的,主程序还在stop状态没有被回收时候,如果用single task是可以被唤醒回同一个实例。至于你说的开关状态不对应问题,应该考虑用preference存储起来,每次onresume时候刷新状态
0
B
Bllose

引用来自“hawkyoung”的答案

你的思路基本是对的,主程序还在stop状态没有被回收时候,如果用single task是可以被唤醒回同一个实例。至于你说的开关状态不对应问题,应该考虑用preference存储起来,每次onresume时候刷新状态

@ hawkyoung 我回头看了一下文档,原文是:The system creates a new task and instantiates the activity at the root of the new task. However, if an instance of the activity already exists in a separate task, the system routes the intent to the existing instance through a call to its onNewIntent() method, rather than creating a new instance. Only one instance of the activity can exist at a time.    我想问下他这个noNewIntent()是系统自动调用的么?我刷新状态是在onResumed这里做处理还是在intent建立的时候做处理?

另外我还想起来,我在Service启动的悬浮窗口启动Activity,因为是调用Service的startActivity我必须得标记intent为  FLAG_ACTIVITY_NEW_TASK  这样的话会覆盖掉manifest的属性呀。也就是说我设置的singtask这个属性不是会被覆盖掉么,导致依然是重新建立一个新的task存放新的activity

·        

hawkyoung
hawkyoung
onNewIntent() 是自动调用的,第一次启动以后请求的intent都发往这里了。你说的Service启动情况我理解了,以前没有遇见这样的场景,所以也不清楚,你可以做几个实验试试看。我个人认为一个Activity要把自己拉到前台来,只有通过startactivity方法,看看其他人也没有招数。
0
hawkyoung
hawkyoung

一个月前回答的不完全正确,悬浮窗要把你的攻略Acitivty强制拉到前面来,用ActivityManager的moveTaskToFront就可以了,需要4.0以后的机器。最近正好在做类似的事情,想起了这个事

B
Bllose
大哥,你太敬业了。爱SHI你了。不过我正在准备考研,android暂时丢一边了,求加QQ,以后我肯定要走移动软件的路 。 574931094 请多关照 orz
返回顶部
顶部