标签: lifecycle

Android生命周期和空指针问题

我有一个使用SQL数据库的应用程序.这是由SQLiteOpenHelper类封装的.启动启动画面时,它会在DataProvider类上调用init,该类存储SQLiteOpenHelper的受保护静态实例.init只是调用SQLiteOpenHelper的构造函数:

public class UKMPGData extends SQLiteOpenHelper
{
public UKMPGData(Context context, String databaseName)
{
    super(context, databaseName, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db)
{
    //create table and set up triggers etc
}
    @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
    onCreate(db);
}
}

public class UKMPGDataProvider
{
protected static UKMPGData uKMpgData;

public static void init(Context aApplicationContext, String aDatabaseName)
{       
    uKMpgData = new UKMPGData(applicationContext, databaseName);
}

public static void close()
{
    uKMpgData.close();
}
}
Run Code Online (Sandbox Code Playgroud)

然后我又有两个扩展UKMPGDataProvider的类,因此可以访问uKMpgData.这些类从数据库中检索和存储特定类型的数据.例如.

public class VehicleDataProvider extends …
Run Code Online (Sandbox Code Playgroud)

lifecycle android nullpointerexception

3
推荐指数
1
解决办法
3789
查看次数

Hibernate错误在@PostPersist方法中持久存在实体

我在DB中有双重插入的奇怪错误.我有以下课程:

  • TestEntity - 具有@PrePersist和@PostPersist方法的实体.
  • Auditoria - 审计实体
  • 数据集 - DatasetBean的接口
  • DatasetBean - 实现数据集的无状态bean
  • DatasetFactory - 实例是数据集的EJB(查找)

我把问题放在junit测试中(我使用的是嵌入式Glassfish):

@Test
public void test() throws NamingException {
    Dataset<TestEntity> dataset = this.lookupBy(DatasetBean.class);
    Assert.assertNotNull(dataset);

    TestEntity t = new TestEntity();        
    t.setName(UUID.randomUUID().toString());

    dataset.insert(t);
    System.out.println("end");
}
Run Code Online (Sandbox Code Playgroud)

测试流程如下:

  1. 在获取数据集对象后,我尝试插入TestEntity对象

    @Stateless @EJB(name ="...",beanInterface = Dataset.class)公共类DatasetBean实现Dataset {

    @PersistenceContext(type = PersistenceContextType.TRANSACTION)
    private EntityManager entityManager;
    
    @Override
    public void insert(T entidade) {
        LOG.info("Inserting: " + entidade);
        entityManager.persist(entidade);
    }
    //...
    
    Run Code Online (Sandbox Code Playgroud)

    }

  2. 使用DatasetFactory,我尝试在TestEntity的@PostPersist方法中插入审计实体

    公共类DatasetFactory {公共静态数据集createDataset(){尝试{回报率(数据集)新的InitialContext()查询( "...").} catch(Exception ex){throw new RuntimeException(ex); }}}

    @Entity公共类TestEntity实现MyEntity {@Id private Integer id; …

java lifecycle entity hibernate jpa

3
推荐指数
1
解决办法
2789
查看次数

Android生命周期 - 我应该使用服务吗?

我正在创建一个聊天应用程序,我想知道我是否应该使用服务以及它将如何影响我的应用程序的生命周期.据我所知,如果内存不足,Android操作系统可能会破坏我的应用程序.我的问题:如果Android销毁它们或者我是否需要STICKY服务,那么仅使用活动和接收器的应用程序会重新启动吗?我用两者都创建了应用程序,所以我有点想法,但我只是想确定一下.

其次,http://developer.android.com/reference/android/app/Service.html说:

请注意,服务与其他应用程序对象一样,在其托管进程的主线程中运行.这意味着,如果您的服务要进行任何CPU密集型(例如MP3播放)或阻止(例如网络)操作,它应该生成自己的线程来执行该工作.

我的应用程序有一个长时间运行的线程(AsyncTask),它从服务器读取(并不断阻塞).最好不要使用服务并使用AsyncTask来保持我的应用程序原样吗?如果Android选择关闭我的应用,这将如何影响应用的生命周期?如果没有必要,我是否应该提供长期服务,这是不错的做法,如果我应该制作一个STICKY服务呢?我注意到很多聊天和txt msg应用都使用了粘性服务.我只是想想我的应用程序是否需要一个.

再次感谢您!

memory service lifecycle android android-asynctask

3
推荐指数
1
解决办法
791
查看次数

在ASP.NET中运行代码的绝对最早的地方的执行顺序

有许多地方可以在ASP.NET中执行初始化代码:

  • web.config已处理完毕
  • WebActivator PreApplicationStartMethod
  • WebActivator PostApplicationStartMethod
  • Global.asax中 Application_Start

这些事件的排序是什么?是否还有其他附加项目应该列入此列表?

编辑:由于有人提到静态与第一个调用位置相关,我将为它们打破这个问题

WebActivator中使用的Foo类 PreApplicationStartMethod

  • 静态构造函数
  • 静态只读字段

WebActivator中使用的Bar类 PostApplicationStartMethod

  • 静态构造函数
  • 静态只读字段

在Global.asax中使用的Baz类 Application_Start

  • 静态构造函数
  • 静态只读字段

为清楚起见,假设在上面的例子中,每个例子都依赖于在该位置使用的Foo/Bar/Baz类,并且该类包含静态构造函数和静态只读字段.

asp.net lifecycle

3
推荐指数
1
解决办法
1764
查看次数

如何在React生命周期中的渲染函数之前访问新的props.value

所有:

如果我定义一个组件有一个名为"value"的属性,

var Child = React.createClass({
  componentWillReceiveProps: function(){
     console.log("componentWillReceiveProps",this.props.value);
  },
  shouldComponentUpdate : function(){
    console.log("shouldComponentUpdate", this.props.value);
    return true;
  },
  componentWillUpdate : function(){
    console.log("componentWillUpdate", this.props.value);
  },
  componentDidUpdate: function(){
    console.log("componentDidUpdate", this.props.value);
  },
  render: function(){
    return (
      <div>The value generated by Parent: {this.props.value}</div>
    );
  }
});
Run Code Online (Sandbox Code Playgroud)

如果我想将新设置的props.value赋予state.value(或者可能为转换/插值准备一个值),但渲染之前的所有阶段只有前一个值.谁能告诉我如何在渲染之前获得新值?

谢谢

lifecycle reactjs

3
推荐指数
1
解决办法
6363
查看次数

Swift viewWillAppear延迟了

过去5个小时我正试图修复这个bug.我有两个VC.在第一个VC中有一个触发segue的轻击手势.

@IBAction func addMaterial(sender: AnyObject){
        dispatch_async(dispatch_get_main_queue()) {
            self.performSegueWithIdentifier("addNewMaterialSegue", sender: self)
        }
    }
Run Code Online (Sandbox Code Playgroud)

第二个VC:

override func viewDidLoad() {
     dispatch_async(dispatch_get_main_queue()) {
        super.viewDidLoad()
        print("viewDidLoad")
    }
}


override func viewWillAppear(animated: Bool) {
    print("viewWillAppear")
    super.viewWillAppear(animated)
 }
Run Code Online (Sandbox Code Playgroud)

从viewDidLoad到viewWillAppear需要大约5个秒.我知道我不是第一个提出这个问题的人,但我没有找到与"创建和呈现视图控制器应该在主线程上完成"不同的解决方案,而不是我的情况.

lifecycle ios swift

3
推荐指数
1
解决办法
550
查看次数

在房间数据库中添加列

我一直在研究 Android 中新架构组件中引入的 Room DB,并考虑将我当前的 DB 迁移到 Room DB。

但是我当前的 db 实现允许我向表中添加列,但根据 Room,POJO 类中的字段表示表的列。

可以使用原始查询在 Room DB 中添加列,如果是,我将如何实现它。

architecture lifecycle android android-room

3
推荐指数
1
解决办法
7137
查看次数

Aurelia中组件和视图之间的差异(及其生命周期)

你能否告诉我Aurelia中的组件和View之间有什么区别?他们的架构是什么?他们的生命周期有什么区别?

lifecycle components view typescript aurelia

3
推荐指数
1
解决办法
515
查看次数

Ionic 2/Angular 2组件生命周期钩子

我有一个页面中的组件,我需要在每次导航到页面时挂钩.它包含一个mapbox地图,我发现它没有正确调整大小如果用户注册使用注册页面并拉起键盘然后返回到地图页面地图div较小,因为用户拉开了他们的键盘电话.我希望这是有道理的?

我已经尝试了这里列出的所有钩子https://angular.io/guide/lifecycle-hooks,但每次导航到页面时都不会触发.

任何帮助都会很棒.

events hook lifecycle ionic2 angular

3
推荐指数
1
解决办法
6208
查看次数

Angular 5 ngOnChanges仅在子组件中触发一次

我有一个包含复杂输入(一些图表数据)的子组件.在获得API响应后,我通过Angular 5中的@Input()装饰器从父组件发送此图表数据.因此,每次在父组件上更改时,我都需要根据API响应同步图表,因此,OnChange Lifecyle.但不幸的是,我无法使其正常工作.我尝试设置一个具有基本数字类型的虚拟输入字段并增加它但是徒劳无功.这是我的实现:

儿童图表组件:

export class ChartComponent implements OnInit, OnChanges {

  @Input() chartData;
  @Input() triggerChart;

  ngOnChanges(changes: SimpleChanges) {
    console.log(changes);
  }

}
Run Code Online (Sandbox Code Playgroud)

父组件html:

<app-chart [chartData]="chartData" [triggerChart]="triggerChartData"></app-chart>
<input [(ngModel)]="triggerChartData" type="hidden">
Run Code Online (Sandbox Code Playgroud)

父组件:

this.chartService.getChartData(params).subscribe(res => {
  this.chartData = res;
  this.triggerChartData++;
});
Run Code Online (Sandbox Code Playgroud)

PS:作为标题的ngOnChanges仅指示在组件使用未定义值初始化时触发一次.

lifecycle onchange typescript angular

3
推荐指数
1
解决办法
6585
查看次数