我的应用程序使用远程服务播放音频.我这样做是为了没有活动拥有音频的播放 - 用户可以触发一些音频从一个Activity播放,音频将在他们浏览应用程序时继续播放.但是,当用户通过退出,锁定显示器或点击主页"卸载"应用程序时,我想告诉服务暂停或停止播放音频.当应用程序是单个活动时,我在onPause中执行此操作.所以,我想我实际上是在应用程序/任务级别寻找"onPause".这样的事情存在吗?如果没有,那么获得通知的"最佳实践"方式是什么,用户要么完全支持该任务,要么完全退出或者回家?
我的公司有一个最初为Windows XP开发的桌面应用程序.原来的程序员已经被开除(开除极端偏见我可以补充).我已经修复了不同的应用程序,但总体上试图避免它,它是一个烂摊子,唯一真正的解决方法是完全重写它,这可能需要一年.
我们一直试图"忘记"这个应用程序,而是引导客户端使用我们的Web版本,这个版本更新,更易于维护,更容易扩展,并且更容易支持.大多数客户都同意,网络版本更好.
但是,我们有一个客户坚持使用桌面应用程序.该应用程序需要一些胶带才能在Vista上运行,但现在在Windows 7上完全中断.我甚至不确定所有修复程序是否能让它在Win7上运行(目前的时间估计值为"奇迹")但是在安装RELEASE构建并从Visual Studio运行DEBUG构建之后,应用程序几乎在每个用户操作上都有错误,而且从高级别测试运行中我可以看到,它们都不相关.
由于Windows 7在开发此应用程序时不存在,我的公司是否真的希望能够进行所有必需的更改,使其像在XP上一样"顺畅"运行?
编辑:管理层想知道"支持新操作系统的行业规范是什么?" 因为我对那个也没有真正的答案.
我在我的应用程序中使用了这里的代码,当我点击"取消"选项时,应用程序只是最小化,当我长按住主页按钮并选择应用程序时.它显示相同的屏幕而不是闪屏或通常的方式应用程序启动 - 所以我假设它只是带我到主屏幕.我正在寻找一种可以完全关闭主要活动的方法.
我尝试了以下方法,每次都崩溃了:
finish();mainactivity.class.finish();systemexit()setresult() 在另一项活动中.我们大多数人都熟悉这种模式:
public class MySingeltone {
public String mSomeReferenceTypeData;
public int mSomeValueTypeData;
private static MySingeltone mInstance;
private MySingeltone() {
}
public static MySingeltone getInstance() {
if (mInstance == null) {
mInstance = new MySingeltone();
}
return mInstance;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我最近发现mInstance在使用他的活动被销毁之后,或者当整个应用程序假设为子句时,不等于null,例如:
public class SomeActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MySingeltone mySingeltone = MySingeltone.getInstance();
mySingeltone.mSomeReferenceTypeData = "some value";
}
}
Run Code Online (Sandbox Code Playgroud)
在关闭整个应用程序运行活动(比如说...之后10秒)下次启动"SomeActivity"时,mInstance仍保持相同的引用,并且在其字段上具有相同的值.
它为什么会发生?
我错过了什么?
当android垃圾收集静态成员属于应用程序?
我有一个问题如何等待WPF生命周期方法中的异步方法(使用Caliburn-Micro框架)(例如OnActivate,OnInitialized,OnExit - 它直接绑定到Application.Exit事件)
这篇文章准确地描述了我的问题:http://mark.mymonster.nl/2013/07/10/donrsquot-make-your-application-lifetime-events-async-void(现在我正在考虑使用本文中的解决方案) ,但第一眼看起来有点矫枉过正)
我需要在OnExit hanlder中等待一些异步方法,所以我把它作为异步.它有效.的种类.我不明白为什么?,但在调用Application.Exit事件时,它会以某种方式等待,直到该方法完成,即使处理程序是异步void.你能解释一下这有可能吗?这样安全吗?还是只是自信?Async void应仅用于顶级事件,是这种情况吗?
我查看了System的代码.绑定看起来像这样:
public event EventHandler Exit
{
add
{
XcpImports.CheckThread();
this.AddEventListener(DependencyProperty.RegisterCoreProperty(20053U, (Type) null), (Delegate) value);
}
remove
{
XcpImports.CheckThread();
this.RemoveEventListener(DependencyProperty.RegisterCoreProperty(20053U, (Type) null), (Delegate) value);
}
}
Run Code Online (Sandbox Code Playgroud)
这真是神秘,我无法通过调用此事件来了解.net框架中真正发生的事情.
同样奇怪的是,当我不使用ConfigureAwait(false)时,在处理程序中调用等待Task.Delay(1)会导致DeadLock .所以我想说有一些地方.Wait()深入使用.net代码.
注意:当我按照预期生成OnActivate,OnInitialized处理程序async时,页面不会等到处理程序完成.
谢谢你的回答!
我仍然没有得到Application(不是Activity)生命周期的方式,
在启动GUI时调用Application的onCreate方法非常简单.
但是,它是在以下任何一种情况下开始的吗?
申请流程能保持多久?
现在我有一个问题,我看到应用程序(进程)在关闭/终止应用程序后重新启动.然而,没有任何实现,所以有这种行为.
android application-lifecycle android-service android-lifecycle
现在,如果用户碰巧从纵向模式切换到横向模式,则活动将获得onDestroy调用.此时我关闭套接字并停止线程.
当Android切换横向模式时,它再次调用onCreate,我必须重新连接套接字.此外,所接收的活动的所有数据都需要再次下载,因为服务器无法知道之前发送的内容,即没有"恢复"功能.
因此问题在于,当横向模式改变时,存在大量重新发送的数据.
我有什么选择?
欢迎所有输入:-)
/亨利克
作为一名经验丰富的.NET开发人员,我对学习Ruby on Rails开发过程感兴趣.我有ASP.NET WebForms和MVC的经验,我也使用过PHP.我已经完成了一些基本的RoR教程,并且能够让它们正常工作.
这个问题更具体地涉及这种类型开发的工具和开发过程,因为它与我习惯的不同.除了Rake之外,用于管理开发生命周期和将网站投入生产的典型工具(开发,测试,部署)是什么?对于我的基本思维过程与开发.NET有什么需要改变的吗?
我有一个支持iOS 12的应用程序。我正在添加对iOS 13的支持。我有一个视图控制器,当该应用程序进入后台时,它需要执行快速操作。
在iOS 13之前,这非常简单。添加一行,例如:
NotificationCenter.default.addObserver(self, selector: #selector(didEnterBackground), name: UIApplication.didEnterBackgroundNotification, object: nil)
Run Code Online (Sandbox Code Playgroud)
在viewDidLoad或也许init。
然后添加didEnterBackground方法:
@objc func didEnterBackground() {
// Do my background stuff
}
Run Code Online (Sandbox Code Playgroud)
对于iOS 12及更低版本,这一切都很好。
但是现在有了iOS 13的场景支持,在iOS 13上运行时不会调用我的通知。它仍然可以在iOS 12模拟器/设备上使用。
我需要进行哪些更改?