所以我了解服务生命周期以及所有这些.但我很困惑startId参数是什么?
public int onStartCommand (Intent intent, int flags, int startId)
Run Code Online (Sandbox Code Playgroud)
我得到它与它一起使用stopSelf(int),但我看不出有什么意义或者生成startId的地方.什么用例会使用stopSelf(int)?
这似乎没有很好地记录或我错过了,所以在我运行一堆我自己的测试之前,我想知道是否有人已经知道其中一些问题的答案.
首先,当我说"申请"时,我指的是扩展Application课程. http://developer.android.com/reference/android/app/Application.html
我的问题如下,有些是相关的.
当用户从应用程序中离开活动并转到另一个应用程序的活动时,应用程序是否会以某种方式暂停,即使它没有onPause()?或者它是否继续不受影响直到它的所有活动都被销毁?
应用程序什么时候停止?当它的所有活动都被销毁?
是否有可能在没有应用程序实例的情况下运行其中一个应用程序活动,或者如果有其中一个活动,应用程序类是否总是存在?
如果应用程序上正在运行某个进程,并且它的所有活动都已暂停,那么该进程是否会继续运行?
应用程序是以任何方式通过轮换实现的,还是轮换只会改变活动?
谢谢
我在tabhost中有2个活动.在Activity1中,我处理方向更改以及用户何时在活动之间切换正常.
当用户从Activity1切换到Activity2(通过选项卡选择),执行方向更改,然后切换回Activity1时,问题就开始了.当Activity2可见时,我的Activity1中发生的生命周期事件让我感到有点迷茫.
根据调试器,这是我的Activity1中发生的事件序列:
===方向改变===
onSaveInstanceState
onPause
onStop
onCreate
onStart
onRestoreInstanceState
onResume
===切换到活动2 ===
onSaveInstanceState
onPause
===在活动2中改变方向===
onStop
onCreate
onStart
===从Activity2切换
回来=== onResume
如您所见,我有机会在调用onSaveInstanceState时保存我的Activity1数据,当它被切换到Activity2时,但我从未调用onRestoreInstanceState来恢复它.
问题
为什么android在切换到另一个活动时调用我的onSaveInstanceState,如果它不打算在切换回时调用onRestoreInstanceState?
当Activity2可见时,为什么我的Activity1中没有onSaveInstanceState/onRestoreInstanceState?无论是否可见,我仍然必须保存/恢复数据,是吗?
在这种情况下,保存/恢复数据最安全的地方在哪里?如果它不在onSaveInstanceState/onRestoreInstanceState中,我如何访问该包以进行恢复?
是否有其他解决方案像其他回调我可以利用来缓解这个?
谢谢你的帮助!
格雷格
快速提问 - 活动恢复时首先要做什么?onRestoreInstanceState或onActivityResult?
lifecycle android android-activity onactivityresult onrestoreinstancestate
我在我的一个Android应用程序的活动中实现了onSave/RestoreInstanceState和onCreate中的应用程序状态保存/加载.有没有办法强制模拟器从内存中删除我的应用程序,以便调用onRestoreInstanceState?
目前看起来我的应用程序只是留在内存中(时间比我愿意等待的时间长).当我的活动处于活动状态时点击"主页"按钮时,我会收到以下方法调用:
当我重新激活我的应用程序时,我得到的只是
在模拟器中是否有任何方法强制我的应用程序被封存,以便再次调用onRestoreInstanceState和/或onCreate?
我想知道在反序列化之后是否调用了HttpServlet的init方法.
我不知道是否有任何容器序列化servlet但它实现了Serializable接口,因此有可能这样做.
init方法的JavaDoc指出:"由servlet容器调用,以向servlet指示servlet正在投入服务."
反序列化是否等于"投入使用"?
我有一个"长期运行"的清理操作,我需要在onDestroy()我的操作中执行Activity.做这个的最好方式是什么?
如果我用a Thread来做这件事,我onDestroy()会马上回来; 但是线程参考会发生什么?我正在寻找关于我需要注意的任何含义/陷阱/跳线的建议,因为我认为即使在Activity被销毁之后该过程仍然存在.
我在我的应用程序中使用JmDNS.当用户完成我的应用程序后,我想清理JmDNS实例.我这样做是使用类的close()方法JmDNS.但是,此方法需要5秒以上才能完成.结果,用户Activity在触摸后退键后长时间看到我的屏幕.
我还没弄清楚为什么close()需要这么长时间,但同时我也意识到我真的不需要等待近距离成功完成.我所需要的是一种"触发"关闭并完成它的方法.
我不明白,当我要实现的东西viewDidUnload对viewDidDisappear.这两者有什么区别?
例如,我想NSNotification在视图层次结构中删除视图控制器时发送.在这两种方法之间,我发布通知的位置是否重要?
我想知道如何使用DI管理对象.假设我有一堂课
class Foo : IFoo, IDisposable
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
然后这个类被注入另一个类
class Bar
{
public Bar(IFoo foo)
{
this.Foo = foo
}
IFoo Foo { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我在一些范围内绑定它(我的例子使用MVC和Ninject)
this.Bind<IFoo>().To<Foo>().InRequestScope();
Run Code Online (Sandbox Code Playgroud)
我想知道,因为依赖注入框架处理生命周期Foo,我应该实现IDispoable Bar吗?我的想法是DI正在管理其生命周期Foo,所以不要触摸它,以防其他类使用Foo.此外,由于一次性对象Bar作为构造函数参数传递,因此Bar不会包装一次性对象,因此它不知道后面Bar要使用的调用者是如何进行垃圾回收的.这是正确的吗?FooBar
当我创建一个Polymer 2.0元素时,只有ready生命周期回调似乎会触发,我无法理解为什么.例如,我有这个Polymer元素:
<link rel="import" href="../../bower_components/polymer/polymer-element.html">
<dom-module id="flip-four-board">
<script>
class FlipFourBoard extends Polymer.Element {
static get is() { return "flip-four-board"; }
created() {
super.created();
console.log("created");
}
ready() {
super.ready();
console.log("ready");
}
attached() {
super.attached();
console.log("attached");
}
detached() {
super.detached();
console.log("detached");
}
}
customElements.define(FlipFourBoard.is, FlipFourBoard);
</script>
</dom-module>
Run Code Online (Sandbox Code Playgroud)
但是当我将它插入这样的页面时:
<!DOCTYPE html>
<html>
<head>
<title>Flip Four Board Tests</title>
<script src="../../../bower_components/webcomponentsjs/webcomponents-lite.js"></script>
<link rel="import" href="../../../bower_components/polymer/polymer.html">
<link rel="import" href="../flip-four-board.html">
<style type="text/css">
html, body {
width: 95%;
height: 95%;
}
</style>
</head>
<body>
<flip-four-board></flip-four-board>
</body>
</html> …Run Code Online (Sandbox Code Playgroud)