第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

SQLiteOpenHelper - 無法訪問已處置的對象

SQLiteOpenHelper - 無法訪問已處置的對象

C#
梵蒂岡之花 2022-12-24 12:54:06
我有一個(gè)我的SQLiteOpenHelper班級,它被寫成單身人士。我應(yīng)該注意,我不是在 Java 中執(zhí)行此操作,而是使用 Xamarin.Android C# 編寫此程序。這是該課程的一個(gè)片段:public class DatabaseHelper : SQLiteOpenHelper{    private static readonly string TAG = typeof(DatabaseHelper).FullName;    private static readonly string _databaseName = "istockdb";    private static readonly int _databaseVersion = 32;    private static DatabaseHelper _instance;    private Context _context;    private DatabaseHelper(Context context) : base(context, _databaseName, null, _databaseVersion)    {        _context = context;    }    [MethodImpl(MethodImplOptions.Synchronized)]    public static DatabaseHelper Instance(Context context)    {        // *** Use the application context, which will ensure that ***        // *** the Activity's context is not accidentally leaked ***        return _instance ?? (_instance = new DatabaseHelper(context.ApplicationContext));    }}所以我有DatabaseHelper一個(gè)單身人士,在活動(dòng)和服務(wù)中這樣使用:服務(wù):[Service(Name=Text.MobileBackgroundHbService, Enabled = true, Exported = true), IntentFilter(new []{Intents.SyncHeartbeats})]public class BGHeartbeatService : BaseIntentService{    public BGHeartbeatService()    {        this._database = DatabaseHelper.Instance(Application.Context);    }    protected override void OnHandleIntent(Intent intent)    {        if (this._database == null)            this._database = DatabaseHelper.Instance(Application.Context);        if (intent.Action.Equals(Intents.SyncHeartbeats)) SyncHeartbeatRecords();        var broadcastIntent = new Intent(Intents.MobileRefresh);        SendBroadcast(broadcastIntent);    }}
查看完整描述

1 回答

?
隔江千里

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊

事實(shí)證明,我的單例實(shí)例DatbaseHelper沒有被處理掉。


實(shí)際上發(fā)生的事情是我正在處理由輔助方法中SQLiteDatabase的 from 使用的對象。DatbaseHelper


要真正解決這個(gè)問題,我所要做的就是改變:


/// <summary>

/// Inserts a Heartbeat record into local DB.

/// </summary>

/// <param name="heartbeat"></param>

/// <returns></returns>

public long InsertHeartbeat(Heartbeat heartbeat)

{

    if (heartbeat == null) return -2L;

    // This using() statement is causing the disposal

    using (var db = this.WritableDatabase)

    {

        var id = -3L;

        db.BeginTransactionNonExclusive();

        try

        {

            var cv = GetContentValues(heartbeat);

            id = db.Insert(DatabaseSchema.Heartbeat.TableName, null, cv);

            db.SetTransactionSuccessful();

        }

        catch (Exception e)

        {

            // TODO: Document Exception

            Util.Tools.Bark(e);

        }

        finally

        {

            db.EndTransaction();

        }

        return id;

    }

}

到:


/// <summary>

/// Inserts a Heartbeat record into local DB.

/// </summary>

/// <param name="heartbeat"></param>

/// <returns></returns>

public long InsertHeartbeat(Heartbeat heartbeat)

{

    if (heartbeat == null) return -2L;


    // This is no longer initialized in a using() statement

    var db = this.WritableDatabase;


        var id = -3L;

        db.BeginTransactionNonExclusive();

        try

        {

            var cv = GetContentValues(heartbeat);

            id = db.Insert(DatabaseSchema.Heartbeat.TableName, null, cv);

            db.SetTransactionSuccessful();

        }

        catch (Exception e)

        {

            // TODO: Document Exception

            Util.Tools.Bark(e);

        }

        finally

        {

            db.EndTransaction();

        }

        return id;


}

概括:


通過在輔助方法內(nèi)的語句內(nèi)初始化我的SQLiteDatabase db對象,我處理了我需要的對象。using()SQLiteDatabaseDatabaseHelper


查看完整回答
反對 回復(fù) 2022-12-24
  • 1 回答
  • 0 關(guān)注
  • 84 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號