我创建了一个小部件应用程序,我在其中使用SQLite数据库对象,该对象在用户启用其小部件时初始化。我将Database对象声明为静态,因为在调用null
方法之后它变为onReceive()
并且我的应用程序崩溃了。
现在我在mDatabase
方法中使用onReceive()
对象,一切正常,除了:
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++;
}
};
答案 0 :(得分:3)
你不应该在onReceive()
进行长时间的操作。您应该启动一个服务(IntentService
)来更新您的小部件并在那里执行您的数据库。另外请记住,您的应用程序的活动和服务可能随时被杀死,因此您需要处理此问题。如果您需要访问数据库帮助程序类(DatabaseObject
),请将其设置为单例,并且它将在您的进程的while生命周期中可用。