注文の多いしゃけ。

しゃけです。

intentとtaskについて[Android]

詰まったので簡単にメモ。

 

Androidインテントとタスクについて。

特に"タスクの一番初めにスタックされたActivity起動インテント"について。

  

"タスクの一番はじめにスタックされたActivityを呼び出すインテント"  ... とは?

ex 1) アプリ未起動の際にアプリ一覧からアプリを起動した際のインテント

ex 2) Google play booksなどの、別のタスクとしてActivityを起動するインテント

(参考)

developer.android.com

 

本題  

本題にして結論

"タスクが空になった後にタスク一覧からタスクを選択"すると、"タスクのはじめにスタックされたActivityを起動するインテント"が実行される

 以下のようなアプリを作成して確かめて見た。 

f:id:p_p__p_p:20171030232732p:plain

左上のボタンを押下すると、"適当な文字列をExtraに詰め込んだIntent"をActivityにsetしてfinish()する。

また、このアプリは特定のスキームに対応しているため、以下のコマンドで暗黙的インテント起動が可能

adb shell am start -d "yuta://hoge"

このアプリを

  1. アプリ一覧から起動→ボタン押下→タスク一覧からタスク選択
  2. 暗黙的インテント起動→ボタン押下→タスク一覧からタスク選択

した時に、ActivityにどのようなIntentが設定されているかを確認した。 

 
アプリ一覧から起動→ボタン押下→タスク一覧からタスク選択

アプリ一覧から起動した時のインテントは以下

D/MainActivity: intent : Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.yutan.intentandactivitysample/.MainActivity bnds=[24,239][230,517] (has extras) }
D/MainActivity: extra : Bundle[mParcelledData.dataSize=148]

finish()後、タスク一覧から起動した際のインテントは以下

D/MainActivity: intent : Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10300000 cmp=com.example.yutan.intentandactivitysample/.MainActivity (has extras) }
D/MainActivity: extra : Bundle[mParcelledData.dataSize=148]

 

"適当な文字列をExtraに詰め込んだIntent"ではなく、LaunchのIntentがActivityに設定されている。

 

暗黙的インテント起動→ボタン押下→タスク一覧からタスク選択

暗黙的インテントから起動した時のインテントは以下

D/MainActivity: intent : Intent { dat=yuta://hoge flg=0x10000000 cmp=com.example.yutan.intentandactivitysample/.MainActivity }

D/MainActivity: extra : null

 

finish()後、タスク一覧から起動した際のインテントは以下

D/MainActivity: intent : Intent { dat=yuta://hoge flg=0x10100000 cmp=com.example.yutan.intentandactivitysample/.MainActivity }
D/MainActivity: extra : null

やっぱり同じ結果。

 

最初は"finish()を行っても、プロセスが多少生きてるからでは?"と思ったのだが、System.exit()でVMを停止しても、Device Monitorでプロセスを消しても同じ結果だったことを考えると、OS管轄なのかな。。

setIntentでもクリアできないとなると、特定の手順を踏むと、予想外に2回同じ手順を踏むこともありそうだなぁ。。。。

 

今回のアプリ

github.com

 

 

備考 : 

タスクについてはAndroid Developerで以下のように書かれている

developer.android.com

 

あと、yanzmさんの記事がめちゃんこわかりやすい。

y-anz-m.blogspot.jp

 

iOSアプリケーション[Objective-C]入門

Objective-CでのiOSアプリ開発をするために勉強したことをつらつらとリンク貼ります。。。

Objective-C難しい。。

 

  1. Hello world
  2. カウントアップアプリの作成
  3. slider機能の実装
  4. AVPlayerでの動画再生アプリ
  5. AVPlayerでの動画再生アプリ(background再生対応)
  6. 。。。

(※以後追加予定)

 

WSGIを使用したウェブアプリケーション1[python]

お久しぶりです。

世間はすっかりGWだということで、時間もできたし少しPythonを再び書き始めました。

今回は、Webアプリケーションとサーバー間のインターフェースをPythonで定義した

WSGI(Web Server Gateway Interface)を勉強したのでメモ。

[リンク] Web Server Gateway Interface - Wikipedia

 

まずは超基本

gistaf2a9b9ebcb5d19b290fe339e900e2a9

statusとheaderを定義して返却するapplicationを定義して、8080ポートで待機するWSGIサーバーを作成しました。

 

次はhtmlを表示します。

 

gist0bfccba1ff92f4535e626fc96ab0949a

 

headerを修正して、application内でhtmlを返却してあげればok 

ちなみに返却する際にリストを返却している理由は、WSGIの規約として「返り値はリスト型でなければならない」とされているからです。

(※str型でもエラーにはなりませんが、WSGI内部でstr型を一文字づつのリスト化されるそうです。)

 

urlparse ライブラリを使用すれば、クエリパラメタも取得可能です。

20.16. urlparse — URL を解析して構成要素にする — Python 2.7.13 ドキュメント

 

gist3a082ab0be38eb70c27a228082f56e2d

 

年月日のurlクエリパラメタを与えると、その日の曜日を出力するアプリケーションです。

以下のようなurlに対して曜日を表示してくれます。

http://localhost:8080/?year=12&month=5&day=10

f:id:p_p__p_p:20170503030037p:plain

 とりあえずここまで。

 

話は変わるけど、gitHubにあげたcommitをgistとしてはてブロに紹介する手段はないのか知らん。

 

Android iOSアプリについて

apk : android用のアプリケーションファイルの拡張子

開発環境 : Android SDK

SDKには、PCと実機をUSBで接続して、アプリをインストールしたり、実行できる機能が提供されている(adb)

 

主にAndroid Studio,eclipseで開発されている。

言語は、Android java (ほぼjava)(他にもC , Scala, C#..)

ビルドツールとして、Gradleを使用する。

(これがまためちゃくちゃ便利。

ビルド時に、簡単なコードの切り替えを行いたい場合なんかはめちゃくちゃ楽に行えます。)

 

android は、いろいろな会社からいろいろな端末が出ているため、VM(仮想マシン)インスタンス上でアプリを動かせるような仕組みになっている。

 

アプリを端末へインストールする方法。

  • Google Playを経由してインストール
  • Android SDKを用いたPCからのインストール
  • apkファイルから直接インストール(どっかのサーバーにおきDLする。)

 

 

 

ipa : iOS用のアプリケーションファイルの拡張子

開発環境 : xcode 

Xcodeでコードの作成、編集、デバッグまで行うことが可能。

ビルドツールとして、distccを使用する(らしい。。?)

コンパイラgccを内包している(。。?)

Xcodeを使用していると、基本コンパイラやビルドツールは意識しないと思います。

(それよりも、証明書関連の方が問題になりがちかな。。?)

プロビあたりの説明は後日できたらと思っております!

言語は、objective -c , swift

 

アプリを端末へインストールする方法。

  • App Storeに公開してインストール
  • iTuneを経由してインストール(Ad Hoc)
  • テストフライトを使用したインストール
  • Xcodeを使用したインストール

 

 

 

とりあえずこんなものですかね。。もー少し追記していきたいなぁ。

(参考にさせていただいた方のブログとか)

間違ってたらガンガン指摘をいただけたら、まだ勉強して3ヶ月程度なので。。。

 

それでは。

眠い。。。

 

 

 

 

 

 

東京グールがやばい。

140文字以上かけるっていいですね。

twitterをしているのですが、Twitterではこんなに文章書けないのでなんだか新鮮です。

 

最近はポケモンがとても面白いです。最終回を迎えたそうなので早く見たいです。

 

ちなみに文字数140文字もかけないです。雑魚なので。

水端

タイトル、「みずはな」と読むみたいです。

物事の始まりという意味です。

 

別にどうこうするわけではないですが、お仕事をもう少し効率的にしたいです。

 

・上司と認識合わせをして仕様を確認する

・わかる部分とわからない部分を切り分ける

・実装手順、必要なものを初期にまとめる

・機能の確認などをしっかりと確認しておく

・どのようなユースケースがあるかを考える(ポジティブな部分、ネガティブな部分)

 

ここら辺が課題ですかねぇ。。

無知だったのでいい勉強になりましたね

初めに。

はじめまして、鮭です。

都内でIT系の会社で汗水たらしてます。

 

わけあって、ブログを開設しなおしました。

いろいろと更新していきますので、よろしくお願いいたします。

 

 ちなみに

 ブログ名はあの宮沢賢治さんからお借りしました。

国語の教科書のなかで一番好きなお話でした。