ユーザーがウィジェットを有効にしたときに初期化されるSQLiteデータベースオブジェクトを使用するウィジェットアプリケーションを作成しました。メソッドが呼び出されてアプリケーションがクラッシュしたnull
直後になる他の場合と同様に、データベースオブジェクトを静的として宣言します。onReceive()
現在mDatabase
、メソッドでオブジェクトを使用していますが、onReceive()
次を除いてすべてが機能します。
- ウィジェットにデータベースの静的メンバーを保持するのは正常ですか、それともより正しい方法がありますか?
- アプリケーションをしばらく使用した後 (1 日か 2 日)、アプリケーションがクラッシュし、一部のメンバーが null になったように見えます (
mDatabase
おそらく )。
コード例
public class Widget extends AppWidgetProvider {
private static DatabaseObject mDatabase = null;
private static int mIndex = 0;
@Override
public void onEnabled(Context context) {
mDatabase = new DatabaseObject (context);
mDatabase.initialize("Some data");
}
@Override
public onReceive(Context context, Intent intent)
{
// Some code ....
mDatabase.getItemAtIndex(mIndex);
mIndex++;
}
};