2011年9月15日
高負荷で落ちるねぇ
さてさてSQLiteのダンプ取込みをJNIで組みましたぁ
まあ、シンプルな構造です
小さなダンプだと問題ありませんw
ただ。。。
レコード数が多いと以下のログを吐出します。。。
----------------------------------------
09-15 08:53:04.163: INFO/ActivityManager(59): Low Memory: No more background processes.
09-15 08:53:08.922: INFO/ActivityManager(59): Process jp.co.omronsoft.openwnn (pid 1080) has died.
09-15 08:53:08.942: WARN/ActivityManager(59): Scheduling restart of crashed service jp.co.omronsoft.openwnn/.OpenWnnJAJP in 5000ms
09-15 08:53:08.942: INFO/ActivityManager(59): Low Memory: No more background processes.
09-15 08:53:11.753: INFO/ActivityManager(59): Process jp.or.test02a (pid 1362) has died.
09-15 08:53:11.913: INFO/ActivityManager(59): Start proc com.android.launcher for activity com.android.launcher/com.android.launcher2.Launcher: pid=1535 uid=10025 gids={}
09-15 08:53:11.913: INFO/ActivityManager(59): Low Memory: No more background processes.
----------------------------------------
そう「Low Memory: No more background processes.」
悲鳴を上げてますね(^^;)
トランザクションでメモリー食ってるのかなぁ
また調べモノがぁ増えたぁ
一応、繰返しロジックはこんな感じ
sqlite3 *db;
int rc = sqlite3_open("/sdcard/cmkdata/test_3.DB", &db);
sqlite3_stmt *st;
strcpy(fs1,"");
while ( fgets(fs,n,fp)!= NULL){
ct++;
strcat( fs1, fs );
ret = strrchr( fs1,';');
if(ret != NULL){
if((strlen( fs1 ) - 2) == (ret - fs1)){
rc = sqlite3_prepare(db, fs1, -1, &st, NULL);
rc = sqlite3_step(st);
strcpy(fs1,"");
}
}
}
sprintf(pszRet,"%ld",ct);
sqlite3_finalize(st);
sqlite3_close(db);
シンプルすぎるのかなぁwww
投稿者:秀at 18:49 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)
参照メンバ名は同じゃなかったw
ふむSQLiteのVer2とVer3のメンバー名同じジャナカッタww
DBオープンもsqlite3_openとsqlite_openだったww
思い込みは怖いねww
まあ、それはそれとして
Javaで個別のJNIライブラリ読込みについて
結果は、こんな感じ
出来たね〜〜
別々にJNIライブラリを作成して
Java側から参照する様にしてます。
少し端折りますが
ライブラリTest02jniでは
sqlite.h(Ver2用)を参照(include)します。
ライブラリTest02v3jniでは
sqlite3.h(Ver3用)を参照(include)します。
個々で別々のメンバ作成します。
今回は「stringFromJNI」(Ver2側)と
「sqliteDBv3」(Ver3側)ですね。
jniフォルダーに個別フォルダーを作ってAndroid.mkを作ります。
何でも良いのですが
今回はTest02フォルダーとTest02v3フォルダーですね。
jniフォルダーにも配下ホルダーを参照する
Android.mkを作ります。
中身は「include $(call all-subdir-makefiles)」だけです。
NDKでビルド(ndk-build)してライブラリを作ります。
あとは、Java側(Activity)で
Test02jniとTest02v3jniの
ライブラリを参照します。
static {
System.loadLibrary("Test02jni");
System.loadLibrary("Test02v3jni");
}
だね
あとはJavaで
個々のメンバ名を参照で
「stringFromJNI」とか
「sqliteDBv3」とか使えば良いですね
ふむぅ(^^;)無理やりポイ感じがぁww
何とか成る事は、なったかぁ・・・
ま〜ダンプ取込んでVer3DB作成する
ロジックをテストで組んで見るかぁ〜〜〜
投稿者:秀at 00:08 | さんでープログラム(Android編) | コメント(0) | トラックバック(0)