[API Guides>App Components>アクティビティ ]
Androidスマホでアプリを動かし、住所を半分入力したところで別のアプリに移る。
そして、また最初のアプリに戻ると操作画面には入力済みの半分の住所がそのまま残っている。
この当たり前に思えることはAndroid開発「アクティビティのライフサイクル」と呼ばれる仕組みによって実現されています。
この「アクティビティのライフサイクル」を理解せずにプログラムすると、アプリを切替える度に画面が初期化され途中まで入力した情報が全部消えちゃうんです!
実は私、App Inventor2でAndroidアプリ開発を始める前、Java開発に挑戦し挫折。
その時、専門書に書かれたこの仕組みを理解しようと頑張ったのですが、頭が悪るく理解出来ませんでした。
そして、使いにくいFileMakerGo開発で悪戦苦闘。
その後、App Inventor2を始めました。
App Inventorなら超簡単!
「アクティビティのライフサイクル」を考える必要が無いんです!
ぶっちゃけ、知らなくてもOK!
App Inventor君が、難しいことは全て良きに計らってくれます 🙂
で、本題です。
先日、本物(=Java)開発者と偽物(=App Inventor)開発者の間に有る見えない壁に衝突:idea:
私が利用している拡張機能付き有料App Inventor開発サービス「AppyBuilder」最新バージョンにFTPコンポーネントが追加されました。
そこで早速、僕のハンディーターミナルアプリにFTPファイル送信機能を実装。
[Hossein Amerkashi’s Blog(Hossein社長ブログ)]
アップグレード版インストーラーをビルドし、スマホにインストールすると・・・・
あれ、大問題発生!
アプリ切り替えの度に、画面が初期化されてしまう!
アプリ画面が初期化されると、下の4ステップを毎回、毎回、毎回繰返す必要が生じてとても不便!
1)ログインする
2)受注画面へ移動
3)指定納品日を入力
4)得意先コードを入力
良きに計らってくれるハズの「onSaveInstanceState()」が動いてないのかな:roll:
とにかく、理由がまったく分からない 😮
この問題を解決するには、僕が一番苦手な”アレ”をするしかないかも・・・・
それは、メンバー同士の情報交換フォーラムへの英語での質問投稿。
この投稿がキツイんです
幼稚な質問をすると無視され(=無言でバカになれてる気がする)るんです。
その前に、技術的な質問を英語で書くだけでバカ汗がダラダラ流れました!
でも、この画面初期問題を何とかしなければ仕事の効率に問題が出る!
そこで、意を決してフォーラムへ質問することを決意:-x
2時間ほど英語で質問文を考え、ダメ元で投稿!
で、その結果は・・・・・・
予想通りの全員からの「無視」
これ、精神的にかなりキツイ!
でも、このままでは苦労して作ったアプリが使い物にならないぞ!
そこで気を取り直し、仕方がないので週末自室で実験 😕
1画面だけのアプリを作り実行、そしてアプリ切り替え。
あれ、画面が初期化されるぞ!
2画面のアプリを作り実行、そしてアプリ切り替え。
あれ、やっぱり初期化される・・・なんで?
結局、超シンプルなテストアプリでさえ、画面初期化が起きるぞ!
なんで、なんで、なんで、なんでだ・・・・:-o
開発のド壺にハマりました!
最新のApp Inventorでは「アクティビティのライフサイクル」機能が省かれちゃったの!?
1日掛け何度も何度も実験していると、あることに気付きました。
インストーラーでアプリをインストールした直後は、何をやっても画面保存しない!
でも、そのアプリをタスクマネージメントアプリでプロセスをKILL(=強制終了)。
その後、再実行すると。。。。
あれ、画面保存してくれる
偽開発者(=App Inventor開発者)の僕には、この不思議なアプリのビヘイビア(=挙動不審な振る舞い)の理由が分かりません。
でも実験した範囲で、取り合えずプロセスを一度KILL(=強制終了)し再実行すれば100%画面保存することを確認出来ました。
よく分かんないけど、取り合えずの解決方法が分かってホッと一息
「アクティビティのライフサイクル」を理解した上でアプリを作るJAVA開発者。
「アクティビティのライフサイクル」を知らずにアプリを作れる気になってるApp Inventor開発者。
この両者の間には、すごーく大きな壁が有るんだと、今回のことで痛感しました
この不思議な現象をフォーラムへ投稿すると返事してくれるかな?
きっと、また無視されるんだろうな・・・・・
他のメンバーって「アクティビティのライフサイクル」を理解してるんだろうか?
私も、user フォーラムで質問があるのですが、質問が初歩すぎると、無視されちゃうのでしょうか。
初歩過ぎると無視かもね
まず、知りたい内容をフォーラム内でキーワード検索してください。
すでに話題になった質問を新規投稿すると無視されます。
親切な人が「その話題はすでに語られてる」と返事くれることもある。
初歩的な質問でも理にかなう内容なら、興味を持ったメンバーが返事してくれます。
とりあえず投稿しては?
ぶっちゃけ、半端プログラマー(JAVAが書けないJAVAプログラマ)の集まりです。
私を含め過半数のメンバーは素人です。
でも、AppyBuilderは6月末で消えるサービス!
質問投げるならKodularかAppInventorフォーラムにすべきでは?
ちなみに質問は何?
私がわかることならお答えしますが・・・・
まぁ、私の知識はとても限定的でお役に立てないかも
ハンディーターミナル開発時に勉強したSQLiteとFTP周りだけしか分かりません。
Android OSとの連携部は数名のシニアエンジニアじゃないとわからないと思います。
かたべさま
こんばんは、お返事ありがとうございます。
会社で、他の支店への物品を送る作業場におりますが、パレットへの積み間違いが多いのです。
ハンディターミナルが欲しいところなのですが、会社は導入してくれません。
アンドロイドスマホのバーコード照合アプリを試したり、App Inventer2でアプリを作成してみましたが、カメラでの読み取りのために「暗い場所はダメ」「時間がかかる」などの理由で、実戦には導入出来ませんでした。
A I2アプリでブルートゥースバーコードリーダーを接続しようとしましたが、ハードルが高いどころではありませんでして、ネット上で情報収集をしていましたら、形部さまのページに辿りつきました。
バーコード照合が出来ればブルートゥースでなくケーブル接続でも良いので、外付けのバーコードリーダーを接続出来たらと思っております。
コメントありがとう
12年前、同じ悩みを持ち、始めたのがハンディーターミナルアプリ(=モバイル端末で動かすデータベースシステム)開発。
Accessの知識をベースにVisialBasic+SQLserver compact、Java+SQLiteを勉強するも挫折。本物の開発言語は、日曜プログラマーには難しすぎて無理でした。
次にお手軽開発環境FileMaker、AppInventorを勉強するも、組み込める機能が少なすぎてまた挫折。
今思うとアプリ開発で一番役立ったのが、この10年間の失敗経験
databaseのテーブル設計、基幹システムとのデータ連携方法、そして画面設計(操作方法、カーソル移動順、eventプログラム、レイアウトや配色)の試行錯誤。
そして、AppInventorのお手軽開発環境でSQLiteが扱えるAppyBuilderをネット検索で発見!
ようやくハンディーターミナルアプリを完成させることができました。
で頂いたコメントですが、私の予想とは異なり技術的質問ではなく「こんなことやりたい」的な目標ですよね
コメント内容をプログラム的に分解すると
1:textboxフォーカス時にbluetoothスキャナーでバーコードスキャン
2:scan時にスキャナーに付与させるCR(Carriage Return)でフォーカス移動。
3:これをトリガーに、LostFocusイベントでSQL実行「select name from master where jancd=’スキャンしたバーコード’」
4:その検索結果を指定labelとtextboxへ貼り付ける
5:この画面を見ながらピッキング(=物理的な荷物運び)
6:実数字を入力し保存(update文実行)
この6ステップのどれが分かり、どれが分からないんですか?
AppyBuilder開発コミュニティーへの投稿は、具体的なプログラム方法なので、例えばSTEP3のSQL文をこう書いたけどダメでした。原因誰か教えて下さい。
STEP6のUPDATE文がエラーでデータが更新されません!なんで?
「こんなことしたい」的質問では、答えが百万通りあるので答えられません。
スキャナー+データベースを使ったサンプルプログラムは浮かびますが、数百ステップもありStep by stepで長々書くのも無理です。
この6ステップのサンプルプログラムを作ってみましたか?
相手が質問に答えれるのは、「こんな風に作ったけどデータ更新されない。こんな場合、どう書くの?」みたいなピンポイントな内容です。
AppInventorでデータベースしたいならGoogle検索ですれば、主に英語ですが直ぐ方法は見つかります。
JAVAでSQL扱うのと比べたら、バカみたいに簡単にデータベースを操れます。
ピンポイントな質問が浮かんだら、またコメントください。