可能这不是一个非常复杂的问题,但首先,我不知道,我应该搜索哪些搜索查询?!
在我的应用程序开始时,我想启动GPS,如果我的应用程序将被启用GPS应该关闭.
如果整个应用程序(非活动)完成,我该如何检查?
是否足以使用onDestroy-Method for Start-Activity,它永远不会以finish()结束?
非常感谢,对于初学者的问题感到抱歉.
穆尔
UPD
我看到了第一个答案,我想说一次.
我不是指ACTIVITY,我的意思是整个APPLICATION(存在许多活动).
如何检查所有应用程序的活动是否已完成,仅在这种情况下停止服务?
那有可能吗?
UPD2:
我在设备上测试了我的解决方案:
"使用onDestroy-Method for Start-Activity就足够了,它永远不会以finish()结束?"
是的,这就够了.
这是一个很长的帖子,所以请耐心等待.我不确定它主要是关于ASP.NET会话状态行为,NInject,应用程序设计还是重构.继续阅读,然后你可以决定...... :-)
首先,有点背景.我们正在努力将大型网上商店重构为更易于维护的结构化设计.网上商店目前在.NET 3.5上运行,但设计更像是传统ASP时代的宿醉.显然,我们无法一次性解决所有问题,因此许多功能/技术/方法必须作为一个给定的.考虑到这一点...
该应用程序在上下文对象中维护与当前会话(用户配置文件,购物车,会话选择等)有关的所有内容,该上下文对象只是一个大型XML文档,可以作为字符串从Session中序列化和反序列化.XML格式也很重要,因为渲染是通过XSLT完成的.
这导致了许多问题:
我们所做的是尝试在xml文档周围引入一个强类型包装器,它将其分解为不同的关注点,并透明地管理应用程序的其余部分的生命周期.
我们的目标是以下工作流程:
在请求开始时,我们从会话中存储的xml字符串填充会话文档.
应用程序的其余部分仅通过强类型包装器与其进行交互.整个应用程序使用相同的实例,不必担心何时检索或将状态保存回会话.
由于我们使用NInject(v1)作为首选IOC,因此我们决定使用它来管理上下文对象的生命周期.上下文对象用OnePerRequest属性包装,dispose方法连接到一个方法,该方法将xml文档作为字符串保存回Session.
我们很快遇到了NInject OnePerRequest模块似乎无法访问SessionState的问题.我们尝试的第一件事是黑客,我们将Session对象保存在变量中,以确保我们仍然可以写入它.这似乎适用于开发机器,但很明显它在移动到进程状态时没有.
我们尝试从OnePerRequest行为/模块继承,并添加IRequiresSessionState标记接口(OnePerRequestRequiresSessionState).但是,这还不够,因为NInject用于释放引用和清理的方法被连接到EndRequest方法.会话在EndRequest中可用,但它已经被序列化到进程外状态服务器,因此当在下一个请求开始时检索会话字符串时,不会反映现在更改的内容.然后我们决定改变偶数t来连接.我们抛弃了EndRequest并将我们的OnePerRequestRequiresSessionState"release all"方法连接到PostRequestHandlerExecute事件,该事件是在会话数据被序列化到进程之前.
这似乎有效.在单个服务器和Web场上.然后我们注意到奇怪的行为.似乎有两个不同版本的上下文,你会在它们之间随机切换.添加一些东西到购物车,它不存在.转到浏览其他产品,之前的产品将显示在购物车中.
经过一些追踪,我们发现了罪魁祸首:Response.Redirect.在整个网站上洒满了数百个地方的是Response.Redirect(url);. 使用此版本的重定向,将立即停止执行页面.这意味着不会触发PostRequestHandlerExecute,并且NInject不会抛弃当前版本的Context对象......一切都会崩溃.没有正确创建新版本等.EndRequest被解雇,这就是普通NInject OnePerRequest模块正常工作的原因,而不是我们试图使用会话状态的标准化版本.
当然,还有一个覆盖Response.Redirect,您可以在其中传递一个布尔值,告诉它是否终止现有页面或继续执行 - Response.Redirect(url,false).继续显然会触发我们的事件,一切正常但是......它继续执行页面的其余部分!这意味着执行调用Redirect之后的所有内容,我们完全不知道这意味着什么(因为现有网站希望它停止).
那么,有什么建议吗?到目前为止,我们已经讨论过:
我担心的是,我们的活动在堆栈中会持续多久?
我的意思是,当从我的应用程序按下主页按钮,然后通过单击其图标再次启动我的应用程序时,它将重新获得我按下主页按钮的正确位置,而无需为此编写任何特殊代码.
我不知道我是否正确,我认为我的应用程序被推入堆栈,当我启动它时,它从服务器中取出.
我想知道该堆栈或存储它的任何其他地方有多长?在按下主页按钮并使用许多其他应用程序后,是否会被其他应用程序替换?
我想在执行多个字段验证方面有一个关于组件getValue()和getLocalValue()方法之间差异的说明性解释:jsf一次验证两个字段.UIInput
如果字段已经过验证,这种方法的用法有何不同?该ValueHolderAPI文档不回答这个问题非常有帮助.
我正在尝试使用lyfecycle管理选项将我的Amazon S3文件夹中的数据备份到Glacier.我选择了存储桶中的一个文件夹进行测试,并创建了一个生命周期规则,指出具有该前缀的对象需要在30天后迁移到Glacier.我今天创建了规则但是这些文件都超过了30天,所以我希望它们能够立即迁移.但我正在查看该S3文件夹,并没有注意到任何更改.如何确定备份是否实际发生?
在iOS中,我从当前的viewController弹出到前一个,但它不会进入dealloc.
这是因为还有另一个指向当前viewController的指针,在不同的viewController中还是在当前的viewController中?
这是我弹出前一个视图的地方:
- (IBAction)fileUploadCancelTouched:(UIButton *)sender {
[self.fileToUpload cancel];
[self.view hideToastActivity];
[self.greenprogressBar removeFromSuperview];
[self.subView removeFromSuperview];
self.fileUploadCancelButton.hidden = YES;
if (self.commandComeBackToFinalScreen == 1) {
[self.navigationController popViewControllerAnimated:YES];
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的dealloc功能:
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
self.greenprogressBar = nil;
self.fileUploadCancelButton = nil;
self.fileToUpload = nil;
[buttonHome_ release];
[buttonTestMeAgain_ release];
[buttonMarkMyTest_ release];
[examId_ release];
[sender_ release];
self.ob = nil;
[_fileUploadCancelButton release];
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud) 根据Android片段生命周期,我希望在onDestroy重新创建片段之后,或者至少onCreateView再次调用片段.
我有一个活动A开始另一个活动B的结果和活动B创建一个片段F.
public class A extends FragmentActivity {
...
public void onButonClick() {
Intent intent = new Intent(this, B.class);
startActivityForResult(intent, REQUEST_B);
}
}
public class B extends FragmentActivity {
...
public void onCreate(Bundle savedInstanceState) {
...
this.currentFragment = Fragment.instantiate(this, name);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(this.view.getFragmentContainerId(), this.currentFragment, taskName);
transaction.commit();
}
}
public class F extends Fragment {
@override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
this.view = new MyView();
}
@override
public void onResume() { …Run Code Online (Sandbox Code Playgroud) 我在下面有一个按钮:
<asp:Button ID="btnApprove" runat="server" Text="Approve" CssClass="button" OnClick="btnApprove_Click" />
Run Code Online (Sandbox Code Playgroud)
服务器端此按钮的事件处理程序为:
protected void btnApprove_Click(object sender, EventArgs e)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "key", "alert('Button Approve Clicked')", true);
}
Run Code Online (Sandbox Code Playgroud)
只需从服务器端单击按钮获得警报。
我的问题是,一旦单击“批准”按钮,现在当我再次加载或刷新页面时,此btnApprove_Click事件就会每次执行。
我在同一表格上还有许多其他按钮,但是没有一个按钮显示这种奇怪的行为。我试图将此按钮更改为HTML,但仍具有相同的行为。
谁能帮我摆脱困境。提前致谢。
我正在使用延迟加载的Angular模块开发应用程序.
我有一个简单的问题:
是否可以在加载模块时捕获事件?
例如OnInit.此链接解释了生命周期挂钩,但它仅适用于组件:组件的生命周期挂钩
我找不到任何解释如何挂钩模块的文档.
有人知道如何解决这个问题吗?
谢谢
对我来说,究竟是哪个componentWillReceiveProps和getDerivedStateFromProps是微妙的问题。因为,在使用getDerivedStateFromProps时遇到一个问题:
// Component
state = {
myState: []
}
// Using this method works fine:
componentWillReceiveProps(nextProps) {
this.setState({
myState: nextProps.myPropsState
})
}
// But using this method will cause the checkboxes to be readonly:
static getDerivedStateFromProps(nextProps,prevProps) {
const { myPropsState: myState } = nextProps
return {
myState
}
}
// And here's checkbox
<input type="checkbox" id={`someid`}
onChange={(e) => this.handleMethod(e, comp.myState)}
checked={myState.indexOf(comp.myState) > -1} />
Run Code Online (Sandbox Code Playgroud)
反应版本:16.4.1