Androidのデータベース「SQLite」の使い方は? 今回は、以下の記事の続編になります。 Androidアプリのデータ保存方法の一つ「SQLite」の使い方 SQLiteOpenHelper編 Androidアプリのデータ保存方法の一つ「SQLite」の使い方 行の追加・更新・削除編 これまで、データベースのオープンと、レコードの追加・更新・削除についての説明をしました。 今回は、SQLでいうselect文、レコードの検索について説明していきます。 一概にはいえませんが、データベースを取り扱う上で、コード的には最も実装する場面が多いのが、このselectじゃないかなと思います。 これから示すサンプルコードでは、「Androidアプリのデータ保存方法の一つ「SQLite」の使い方 SQLiteOpenHelper編で掲載しているサンプルコードにて、既にSQLiteDatabase型イン
Androidアプリで、SQLを書くけど、上手な書き方ってあるの? Webアプリケーション系の技術者であれば、SQLは必須の技術ですが、組込み系の技術者の多くは、おそらく今まではSQLを書く、という事はあまり無かったのではないでしょうか? 私は今でこそWeb系なので、SQLを頻繁に書いたり治したりしますが、携帯電話の組込みをしていたときは、全然書いた事ありませんでした。 基本情報技術者試験やソフト開発技術者試験で、ちょろっと基本的な内容を勉強した程度です。 という事で、見やすいSQLの書き方、というのを紹介したいと思います。 Androidアプリで複数のテーブルを使うという大々的なデータベースを使う、という事はあまりないかもしれませんが、複数のテーブルを元にデータを取得する、というときの上手な書き方を紹介したいと思います。 もちろん、私の主観ですので、必ずしもそうではないかもしれません。
SQLite は、軽量で組み込み型のリレーショナルデータベース管理システムです。そのシンプルさと使いやすさから、モバイルアプリ、デスクトップアプリ、IoT デバイス、組み込みシステムなど、さまざまな環境で利用されています。 SQLite の最大の特徴はサーバーレスであることです。 MySQL や PostgreSQL などはサーバー型のデータベースですが、 SQLite は専用のサーバーを必要とせず、データベースを利用するアプリケーションと同じプロセス内でデータを操作できます。また SQLite はデータベース全体を 1 つのファイルで管理します。そのため、バックアップや別の環境への移行も、ファイルをコピーするだけで簡単に行えます。 SQLite は手軽に利用でき、モバイル環境を含む多くのプラットフォームで動作するため、アプリや組み込みシステムを含む、小規模なデータ管理で広く利用されていま
前回のブログにも書いたけど、Androidエミュレータが重すぎて使いものにならない。 このままではまともに開発できないので、少しでも緩和できないものかと色々調べてみたので、備忘録もかいてまとめ。 以下、高速化の方法です。 まだ実際には検証まではしていません。 1.エミュレータを落とさない やはりエミュレータの起動のコストが一番高い。 使うときは常時起動させておくことで、まずはこの起動コストが高い問題を回避しましょう。 2.エミュレータを複数起動しておく 1と同じですが、エミュレータの起動のコストが一番高い。 Androidのバージョンを変更して確認したい場合など、いちいち再起動するとそれだけで数分(マシンによっては10分以上)の時間を費やしてしまう。 これを回避するために、あらかじめ確認で必要なパターンのエミュレータを起動しておくことである程度は回避できる。 高速化でもなんでもないけど、ま
※追記しました. OSXの方々は注意点もありますので、追記も併せてご覧ください 2012.10.17 Android爆速エミュレータ環境の作り方 Android開発者界隈のTwitter TLで、「Androidのエミュレータが低速で使い物にならないとか言って許されるのは小学生までだよねー。きゃははー」的な会話が繰り広げられていたので、これは知らないのはマズイのでは、という危機感から、一念発起し、爆速Androidエミュレータ環境の構築を試みました Androidのエミュレータが低速で使い物にならないというのは、すでに過去の話だそうです。真の情報強者の方々は、すでに爆速エミュレータでの開発を行っているようです。中には、実機よりも早いので、実機代わりに使ってるという方もおられるようです もうAndroidのエミュレータが遅いなんて言わせない!iPhoneのエミュレータに匹敵する(?)速度を手
重複した記事があるとの指摘がありました。 下記のほうが図とかステップが充実しています! http://qiita.com/items/8bc1a11f1382409f1d2a 【もはやエミュレータとは言わせない】 そもそも超速エミュレータが必要な理由 AndroidアプリやWebアプリを作る際、OSバージョンが多すぎて実機とか全部揃えていられないので、エミュレータを使ってデバッグすることになると思います。しかしこのエミュレータが非常に重たくて、MacBook Airなんかで使えたものではありません。これはスマホのARMアーキテクチャのCPUを、PCのx86アーキテクチャのCPU上でエミュレートしているためです。 この問題の解決策として、Intelがx86 CPUで直接動作可能なAndroidを配布しています。Androidの各種アプリは基本的にJava製なので、「Java(Dalvik)仮
はじめに ここでは、エミュレータの作成と起動、日本語環境の設定を行います。 エミュレータとは PC上でAndroidアプリの動作確認ができるプログラムのことです。 様々なバージョンや画面解像度の端末が存在するAndroidでは、実機がなくてもPC上で動作確認ができるように、バージョンや画面解像度を指定して、エミュレータをいくつも簡単に作成できます。 エミュレータ - Wikipedia 事前準備 HAXMとIntel x86 Atom System Imageを組み合わせるとエミュレータが快適になるのでセットアップしましょう。 元ネタ:【番外編】Androidの爆速エミュレータ環境を構築する | クラスメソッド開発ブログ 追記:Mac OS X Mountain Lion 10.8.2の場合は、OSごとクラッシュする問題があり、HAXMのHotfixがIntel公式のダウンロードページから
疑問 androidのViewはidでインスタンスとったり、どのViewか判断したりと使います。 でもOKボタンなど汎用的な名前のID名は高確率で被ります。 同じ画面でOKボタンが複数ある場合はあまり考えられませんが、異なる画面にOKボタンがあるのはあるのではないかと思います。 今回は 異なる画面に同じIDのViewがあった場合 同じ画面に同じIDのViewがあった場合 の2つのパターンを試したいと思います。 異なる画面に同じIDのViewがあった場合 概要説明 画面1(MainActivity)から画面2(SubActivity)に遷移します。 画面1にはEditTextとButtonが配置されており、それぞれidはtxtMessageとbtnOK 画面2にはTextViewとButtonが配置されており、それぞれidはlblResultとbtnOK 画面1と画面2のButtonのidが
Java言語でメソッド中で内部クラスを作る時、そのメソッドのパラメーターやローカル変数に内部クラスのメソッド中からアクセスできます。しかし、この場合にはこれらの変数にfinalを付けないとコンパイルエラーになってしまいます。 public void test(int param) { // コンパイルエラー String value = "Hello"; // コンパイルエラー Test t = new Test() { public void print() { System.out.println("param = " + param); System.out.println("value = " + value); } }; } この問題については、ある程度経験を積んだJavaプログラマーなら常識なのかと思いますが、初心者は最初につまづくところかと思います。しかし、経験を積んだJav
なぜ、内部クラス(ローカルクラス、匿名クラス)からアクセス可能なローカル変数が final でなければならないのか、 その理由が次の記事に説明されている。 いまさらだけど、Java言語にはクロージャーがない - 達人プログラマーを目指して しかし、 つまり、以下のプログラムを考えてみれば内部クラス中からアクセスするローカル変数がfinalでなくてはならない理由が納得ができます。 とあるが、残念ながら、例示されているプログラムでは納得することはできない。 以下がそのプログラム。 public Test createTest(final int param) { final String value = "Hello"; // finalでないと // value = "Hello2"; // param = 3; // などの再代入が可能で結果が矛盾する。 return new Test()
前回の記事で話題となった匿名(内部)クラスとfinalの関係を知るために実験を行った。 と言ってもやる事は無限ループを、教えてもらった匿名クラスの形式で書くこと。 つまり、 new Thread(new Runnable(){ public void run(){ while(true){ myX = myX + myVX; if(myTerminusX == myX){ myVX = 0; }else{ myVX = (myTerminusX - myX)/50+(myTerminusX - myX)/Math.abs(myTerminusX - myX); } myY = myY + myVY; if(myTerminusY == myY){ myVY = 0; }else{ myVY = (myTerminusY - myY)/50+(myTerminusY - myY)/Math.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く