2

私は単純に次のようなクエリを実行しています:

Cursor c = databaseHelper.getReadableDatabase().rawQuery("select " + MyTable.TABLE_FIELD.getColumnName() + " from " + MyTable.TABLE_NAME, null);

その後、必要なデータを抽出し、いくつかのビューに入力します。

c.close();

すべてが期待どおりに機能します。表示されている情報の一部を記載した電子メールを送信する共有意図があります。メールアプリがメールを送信した後、または終了したjava.lang.IllegalStateException後にスローされ、アクティビティが「生き返る」ようになりました。この例外は、この状況でのみスローされます。バックグラウンドに送信してから再度呼び出すと、この例外はスローされません。YouTubeを開いてビデオを再生する意図さえありますが、この例外はスローされません...

なぜこれが起こっているのか本当にわかりません。

御時間ありがとうございます。

ps: 試してみまし//c.close();たが、うまくいきませんでした。

4

3 に答える 3

2

使用できc.requery()ましたが、API レベル 11 で廃止されました。

これを使用しないでください。新しいカーソルをリクエストするだけで、これを非同期で実行でき、新しいカーソルが戻ってきたらリスト ビューを更新できます。

カーソルを作成したクエリを再度実行し、その内容を更新します。これは、deactivate() の呼び出し後を含め、いつでも実行できます。このメソッドはデータベースでクエリを実行し、時間がかかる可能性があるため、メイン (UI) スレッドで呼び出されると ANR が発生する可能性があります。このメソッドがメイン スレッドで実行されている場合、警告が出力されます。

于 2013-04-24T13:11:44.540 に答える
0

これは私のために働いた..

public void onBackPressed() {

    Intent i = new Intent(getApplicationContext(), ClassName.class);
    startActivity(i);
    finish();
    super.onStop();

}
于 2015-03-02T12:35:24.613 に答える