我有两个活动.一个从数据库加载所有行,另一个保存到数据库.当我在onStop中进行第二次保存并且第一次重新计算onResume中的数据时,它们会不按顺序执行(第一次恢复然后第二次保存).我设法通过将保存数据放入onPause来解决这个问题,但为什么会发生这种情况呢?这是最干净的方法吗?
下午好.
我不熟悉android中的活动生命周期并尽可能地阅读,但我无法想出如何以一种很好的方式解决以下问题.
我有一个带有GLSurfaceView的活动,可以在屏幕上绘制各种内容.在这个GLSurfaceView的渲染线程中,我执行所有渲染以及实际更新逻辑(我最终会将其分离出来).
我遇到的麻烦来自渲染器中绘制的一个"屏幕"我希望结束Activity并让它调用各种生命周期方法.
通常我可以使用System.exit(0)执行此操作; 但是以这种方式结束活动似乎并没有调用OnStop(); 的OnDestroy(); 方法.
这可能只是我愚蠢而没有看到这样做的简单方法,但有没有办法访问Activity并调用activity.finish(); 无需将参考文件一直传递下去?
这可能不是一个Android问题,更像是一般的java问题?对不起,我两个都有点生疏了.也许如果有人能够大致解释他们如何在他们的应用程序中处理这样的问题.
我来自Java和Spring的背景,而且我对Castle Windsor很新.我已经读过,知道Castle何时会释放瞬态组件非常重要,因为它跟踪创建的所有组件.我很难理解我的组件何时会被释放.以下是我的模型的基础知识:
Singleton -> Singleton Typed Factory -> Transient Objects
Run Code Online (Sandbox Code Playgroud)
如果我在此链中释放第一个单例,那么将释放由类型工厂创建的所有瞬态对象吗?是否有任何API调用我可以检查是否是这种情况?我在Castle Windsor网站上找不到任何全面的API文档.我发现的文档对我来说似乎并不清楚.
编辑: 我的问题归结为两个主要问题.
我想知道何时调用Storm Spout上的各种方法.
我看了ISpoutjavadoc,这给了我以下心智模型:
"instantiated" -- open(...) -----> "activated"
"activated" -- deactivate() --> "deactivated"
"deactivated" -- activate() ----> "activated"
"activated" -- close() -------> "shutdown"
"deactivated" -- close() -------> "shutdown"
Run Code Online (Sandbox Code Playgroud)
但我不确定何时IComponent.declareOutputFields(...)被召唤.之前还是之后open(...)?何时需要声明输出流和字段?内declareOutputFields(...)?或者可以保留对它的引用并在OutputFieldsDeclarer以后定义它们?如果是这样,它可以在一个单独的线程上吗?
我发现了这个相关的问题(测试风暴螺栓和喷口),但答案似乎没有指出任何设计原则或规格.
我注意到我用Xamarin iOS 7.2.2编写的大型应用程序的间歇性崩溃.乐器告诉我,我的应用程序在内存使用方面的增长并没有真正下降.
我确保在我的UIViewControllers中取消所有事件,尽管如此,我的UIViewControllers还没有被处理掉.
我知道他们没有被处理,因为他们的断点从未执行过.
示例性处理方法:
protected override void Dispose(bool disposing) {
_someViewController = null;
_otherView = null;
ReleaseDesignerOutlets();
base.Dispose(disposing);
}
Run Code Online (Sandbox Code Playgroud)
我没有做任何花哨的事情,除了取消对其他视图的引用和发布设计器出口,但它永远不会被调用.
为什么在从导航控制器弹出我的视图控制器后没有调用Dispose?
问题:
我在一个单独的类中保存了一些数据......有时它会发生,这个单例返回我从中导出的空数据,它被销毁了......
我的想法/想法:
实际上,我认为,只要应用程序存在,单例就会存在,只要应用程序记住其他任何东西,例如片段状态,我的单例也会存在它的最后数据.这不对吗?
具体问题:
我的情况如下:我从我的主片段转到子片段并在我的单身中保存一个选定的对象...我停止使用我的应用程序并在一段时间后回来.我的应用程序记住它的状态并重新创建片段,我的片段想从我的单例中获取所选对象并获得null.
我想,只要应用程序存在就应该存在一个单例,因此不需要保存...每当应用程序结束时,无论如何都不会恢复任何内容,我的应用程序将不会记住任何内容,所以无论如何都没关系.这是一个错误的假设吗?
我需要回答这个问题,因为如果我确定,上述想法是正确的,我至少知道,我必须在其他地方寻找问题......
我试图执行一些代码,每当我的活动被杀害,但不是当它只是移动到背景(所以只是调用它的onPause()是不是一个解决方案),我理解onDestory()是不能保证调用.我一直在寻找并没有找到办法做到这一点.我怎样才能解决这个问题?可能吗?
根据文件:
活动可以频繁地进出前台 - 例如,当设备进入睡眠状态或出现对话框时,会调用onPause().
我有一个带按钮的活动.当我点击按钮时会出现一个对话框.我期望在对话框出现时调用onPause方法,然后在关闭对话框时调用onResume方法.但没有一个被称为.
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MyDialog myDialog = new MyDialog();
myDialog.show(getFragmentManager(),myDialog.TAG);
}
});
@Override
protected void onResume() {
super.onResume();
Toast.makeText(this,"ON RESUME ACTIVITY",Toast.LENGTH_SHORT).show();
}
@Override
protected void onPause() {
super.onPause();
Toast.makeText(this,"ON PAUSE ACTIVITY",Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么这些方法没有被调用?谢谢
我的应用程序进入后台,如果我再次打开,它显示我离开它的同一页面.
虽然,如果iOS将应用程序置于Suspended状态,但它在内存中.如果我回来,将调用哪些AppDelegate方法.
实际上我的目的是将同一屏幕从暂停恢复到应用程序,如果它没有终止.
最后,如果App从SUSPENDED状态返回,将调用Will didFinishLaunchWithOptions.
谢谢..
我一直在阅读有关Android引入的新架构组件的信息,但我无法弄清楚其工作原理:
ViewModelProviders.of(Activity).get(Class)
Run Code Online (Sandbox Code Playgroud)
最初,我认为它调用默认构造函数并返回一个ViewModel对象,然后使用该对象实例化。一个init()方法
public class UserProfileViewModel extends ViewModel {
private String userId;
private User user;
public void init(String userId) {
this.userId = userId;
}
public User getUser() {
return user;
}
}
Run Code Online (Sandbox Code Playgroud)
摘录自指南:https : //developer.android.com/topic/libraries/architecture/guide.html
但是,在指南的后面有以下代码段:
public class UserProfileViewModel extends ViewModel {
private LiveData<User> user;
private UserRepository userRepo;
@Inject // UserRepository parameter is provided by Dagger 2
public UserProfileViewModel(UserRepository userRepo) {
this.userRepo = userRepo;
}
public void init(String userId) {
if (this.user != null) {
// ViewModel is created …Run Code Online (Sandbox Code Playgroud) lifecycle ×10
android ×6
c# ×2
java ×2
.net ×1
apache-storm ×1
background ×1
ios ×1
memory-leaks ×1
ondestroy ×1
onpause ×1
renderer ×1
singleton ×1
transient ×1
xamarin ×1
xamarin.ios ×1