Android Serviceの定数

Android Serviceの定数

public static finalint START_CONTINUATION_MASK
ビットは、
onStartCommand(Intent,int,int)によって返され
killされた場合にサービスを継続する方法を説明する

説明は
START_STICKY
START_NOT_STICKY
START_REDELIVER_INTENT
START_STICKY_COMPATIBILITY
のいずれかになる

public static final int START_FLAG_REDELIVERY
このフラグは
サービスが以前に
START_REDELIVER_INTENT
を返したけど
そのIntentでstopSelf(int)を呼びだす前にkillされたので
Intentが依然配信されたものを再配信するときに
onStartCommand(Intent,int,int)の引数にセットされる

public static final int START_FLAG_RETRY
オリジナルは届かなかったか、
onStartCommand(Intent,int,int)から戻らなかったため
Intentがretryされるときに
onStartCommand(Intent,int,int)の引数にセットされる

public static final int START_NOT_STICKY
onStartCommand(Intent,int,int)から返される定数
サービスが開始されている間
つまり
onStartCommand(Intent,int,int)から戻ってきた後に
サービスのプロセスがkillされ
そこに配信するための新しい開始Intentがない場合
サービス開始状態から外し
Context.startService(Intent)
への今後の明示的な呼び出しまで再生成されなくなる

public static final int START_REDELIVER_INTENT
onStartCommand(Intent,int,int)から返される定数
サービスが開始されている間
つまり、
onStartCommand(Intent,int,int)から戻ってきた後に
サービスのプロセスがkillされた場合
サービスが再起動し、最後に配信されたIntentを
onStartCommand(Intent,int,int)を経由して再配信するためにスケジュールされる

public static final int START_STICKY
onStartCommand(Intent,int,int)から返される定数
サービスが開始されている間、
つまり
onStartCommand(Intent,int,int)から戻ってきた後に
サービスのプロセスがkillされた場合
サービスを開始状態のままにするが
配信されたIntentを保持しない

public static final int START_STICKY_COMPATIBILITY
onStartCommand(Intent,int,int)から返される定数
START_STICKYの互換バージョンになる
これは、killされた後に
onStartCommand(Intent,int,int)が呼び出されることを保証しない

Android Service関連メソッド

Android Service関連メソッド

public final Application getApplication()
このサービスを所有するアプリを返す

public abstract IBinder onBind(Intent intent)
サービスへの通信チャネルを返す
クライアントがサービスにBindできないならnullを返す

引数のintentは、Context.bindService()に与えられたこのサービスにbindするために使われるIntent

戻り値は、クライアントがサービスを呼び出すことができるIBinder

public void onConfigurationChanged(Configuration newConfig)
コンポーネントの実行中にデバイスのconfigurationが変更されると
システムにより呼び出される

Activityや他のコンポーネントとは違い
構成変更のときに再起動されないのて注意

引数のnewConfigは、新しいデバイスの設定

public void onCreate()
サービスが最初に作成されたときに、システムにより呼び出される
このメソッドの直接呼び出しはダメ

public void onDestroy()
長い間使用されず、削除されるサービスへ通知するためにシステムにより呼び出される
サービスは、この時点で保持しているすべてのリソース
つまり、スレッド、登録されたレシーバーなどをクリーンアップする必要がある

戻った後、このサービスオブジェクトへの
これ以上の呼び出しはなく、事実上死んでいることになる
このメソッドも直接呼び出しはダメ

public void onLowMemory()
システム全体のメモリが不足していると呼び出され、積極的に実行しているプロセスに倹約を求める
これが呼び出されるときの明確なポイントは定義されてないが
一般的には、サービスとkillされるのを回避したいフォアグラウンドUIをホストしているプロセスをkillする直前に
すべてのbackground processがkillされたときに呼び出される

public void onReBind(Intent intent)
前持ってすべてのクライアントが
onUnBind(Intent)で切断されたことが通知された後に
新しいクライアントがサービスに接続したときに呼び出される

onUnBind(Intent)がtrueを返すように
Overrideしたときのみ呼び出される

引数のintentは、
Context.bindServiceに与えられた
このサービスにbindするために使われたintent
その時点でIntentに含まれていた任意のExtraはここではみれない

public int onStartCommand(Intent intent, int flags, int startId)
クライアントがstartService(Intent)の呼び出しにより明示的にサービス開始するごとに
それに与えられたものと
開始要求を示す一意の整数トークンを定義され、
システムにより呼び出される

後方互換性のため、デフォルト実装では
onStart(Intent,int)を呼び出し
START_STICKY
または
START_STICKY_COMPATIBILITY
のいずれかを返す

引数のintentは、
startService(Intent)に与えられたIntent
サービスは、そのプロセスがなくなった後に再起動され
それ以前に
START_STICKY_COMPATIBILITY
以外のものを返しているなら
nullになることがある

flagsは、この開始要求に関する追加データ

0
START_FLAG_REDELIVERY
または
START_FLAG_RETRY
のいずれかになる
API Level 8,
API Level 16ではデフォルトが0
API level 9~15はSTART_FLAG_RETRYがデフォルトになる

startId
開始要求を表す一意の整数
stopSelfResult(int)と一緒に使う

戻り値は、サービスの現在の開始状態のためにシステムが使用すべきセマンティクスを示す
START_CONTINUATION_MASKビットに関連した定数のいずれかになる

public void onTaskRemoved(Intent rootIntent)
サービスが現在実行されており、ユーザーがアプリからのタスクを削除したときに呼び出される

ServiceInfo.FLAG_STOP_WITH_TASK
を設定すると、コールバックを受け取れなくなるが、代わりにサービスが停止になる

引数のrootIntentは、削除されたタスクを起動するため使われた元のrootIntent

public void onTrimMemory(int level)
OSがそのプロセスから不要なmemoryをtrimmingするのに良い時間だと判断したときに呼び出される
プロセスがbackgroundに入り
必要に応じて実行している多くの
background processを保持するのに十分なメモリがないときに発生する

引数のlevelは、trimのContext
動作しているアプリをtrimmingする量のヒントを与える

TRIM_MEMORY_COMPLETE
TRIM_MEMORY_MODERATE
TRIM_MEMORY_BACKGROUND
TRIM_MEMORY_UI_HIDDEN
TRIM_MEMORY_RUNNING_CRITICAL
TRIM_MEMORY_RUNNING_LOW
TRIM_MEMORY_RUNNING_MODERATE
のいずれかになる

public boolean onUnbind(Intent intent)
すべてのクライアントがサービスにより発行された特定のインターフェースから切り離されたときに呼び出される

デフォルト実装では、falseを返す

引数のintentは、
Context.bindServiceに与えられた、このサービスにbindするために使われたIntent
その時点でIntentに含まれていた任意のExtraは、ここではみれない

戻り値は
新しいクライアントがサービスにbindするときに
onRebind(Intent)を呼び出してほしいなら
trueを返す

public final void startForeground(int id, Notification notification)
サービスをForegroundで実行するようにする
この状態の間は、ユーザーに示されるために対応中の通知を与える

引数のidは、
NotificationManager.notify(int, Notification)ごとの
notificationのための識別子

notificationは、表示される通知

public final void stopForeground(boolean removeNotification)
より多くのメモリが必要なときにkillされていいように
Foreground状態からこのサービスを削除する

引数のremoveNotificationは、trueなら
以前のstartForeground(int,Notification)
で提供された通知を削除する

falseなら、後の呼び出しが削除
または、サービスが破棄されるまで残る

public final void stopSelf()
サービスがすでに開始されているなら停止する

public final void stopSelf(int startId)
stopSelf(int)の古いバージョンで、結果を返さない

public final boolean stopSelfResult(int startId)
startIdで開始された最新のサービスを停止する

引数のstartIdは、
onStart(Intent, int)で受信した最新の開始識別子

戻り値は、最新の開始要求とstartIdが一致し、サービスご停止されるならtrue
そうでないならfalse

protected void dump(FileDescriptior fd, PrintWriter writer, String[] args)
与えられたストリームへサービスの状態を印刷する
adb shell dumpsys activity サービス名
で実行したときに呼び出される

引数のfd は、dumpに送信されるRAWファイル記述子

writerは、状態をdumpするための
PrintWriterオブジェクト
この関数かれ戻るときに自動的にクローズされる

argsは、dump requestへの追加の引数

Androidでボタンの設定

Androidでボタンの設定

ボタンを使うには、レイアウトファイルでButtonを設定して

クリックイベントとして
setOnClickListenerをセットすることで動作設定する

レイアウトファイルで
onClick=””
で設定してもいいけど、欠点として
コードの難読化するProGuardを使うと
クリックイベントが取得できなくなる

設定ファイルをカスタマイズすれば回避できるけど、
onClickより
setOnClickListenerのほうが無難

まずは、レイアウトファイルでボタンを配置

ソースは

<Buttonbr>android:id="@+id/button"<br clear="none"></br>
android:layout_width="wrap_content"<br clear="none"></br>
android:layout_height="wrap_content"<br clear="none"></br>
android:layout_centerInParent="true"<br clear="none"></br>
android:text="button"/><br clear="none"></br>

android:layout_centerInParent=””
は、
http://wikiwiki.jp/android/?UI%A5%B3%A5%F3%A5%DD%A1%BC%A5%CD%A5%F3%A5%C8%2FRelativeLayout.LayoutParams
の解説にあるように
親の水平方向の中央に配置する設定

これでボタンができたので
つぎはJavaで動作を設定

Button btn = (Button)findViewById(R.id.button);

btn.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v){
Toast.makeText(MainActivity.this, "ボタンテスト",Toast.LENGTH_SHORT).show();
}
});

でボタンを押したらトースト表示する

Serviceクラスについて

Serviceクラスについて

サービスは、ユーザーと対話せずにアプリが要求する長時間の処理を実行したり
他のアプリが、使用するための機能を提供するアプリコンポーネントのこと

サーバみたいなものと考えるとわかりやすい

各サービスのクラスには
そのpackageの
AndroidManifest.xmlに対応する
宣言を持っている必要がある

サービスは、Context.startService()
または
Context.bindService()
で開始できる

サービスは、他のアプリのオブジェクト同様
ホストプロセスのメインスレッドで実行される

これは、サービスがどのようなCPUを集中的に使用するか
例えばMP3再生とか
または、ブロッキング(ネットワーキング)
などの操作をする場合、
その仕事を行うための独自スレッドを持っているサービスの標準的な実装として提供される

サービス作成の詳細は、
http://developer.android.com/guide/components/services.html
を参考に

AndroidでProgressBarの利用

AndroidでProgressBarの利用

ProgressBarは、読み込みしてるときに
グルグル回るリングみたいなのとか
ダウンロードしているときに、何%
とか表示されるバーのこと

主に読み込みとか、ダウンロードなど、どれぐらい進んでいるかを示すために使う

パソコンみたいに
ダウンロードとかで水平バーを使うなら
style=””

?android:attr/progressBarStyleHorizontal
を指定する

リングタイプを使うなら
3種類から選ぶことになる

それぞれ
?android:attr/progressBarStyleSmall

?android:attr/progressBarStyle

?android:attr/progressBarStyleLarge

と大きさの違いで使い分ける

とりあえず、
水平バー
小さいリングタイプ
普通の大きさのリングタイプ
大きなリングタイプ
でレイアウトファイルで設定

ソースコードは

<progressBar
android:id="@+id/horizontal"
style="?android:attr/progressBarStyleHorizontal"
android:layout_height="wrap_content"
android:indeterminate="false"/>

android:indeterminate=”false”

http://wavetalker.blog134.fc2.com/blog-entry-34.html
の解説を参考にさせていただきました

どうやらtrueにすると
progressBarがグルグル回るようです

<progressBar
android:id="@+id/small"
android:layout_height="fill_parent"
style="?android:attr/progressBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:indeterminate="false"/>

<progressBar
android:id="@+id/progressbar"
style=?android:attr/progressBarStyle""
android:layout_width="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_height="wrap_content"/>

<progressBar
android:id="@+id/large"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_height="wrap_content"/>

あとは、Javaで制御

水平バーの場合、
setMax()で最大値
setProgress()で主進捗
setSecondlyProgress()で副進捗
を設定

ProgressBar progressBar = (ProgressBar)findViewById(R.id.horizontal);
progressBar.setMax(100);
progressBar.setProgress(30);
progressBar.setSecondlyProgress(70);

というようになる

Android API level 16 で追加された定数

Android API level 16 で追加された定数

public int DEFAULT_KEYS_DIALER
デフォルトのキー処理中にダイヤラを起動するため
setDefaultKeyMode(int)で使う

public int DEFAULT_KEYS_DISABLE
キーの規程の処理をOFFにするため
setDefaultKeyMode(int)で使う

public int DEFAULT_KEYS_SEARCH_GLOBAL
処理されていないストロークがグローバル検索を許可することを指定するために
setDefaultKeyMode(int)
で使う
通常は、Web検索だけど
一部プラットフォームでは、グローバル検索のための代替メソッドを定義できる

public int DEFAULT_KEYS_SEARCH_LOCAL
処理されていないストロークがアプリ定義の検索開始することを指定するために
setDefaultKeyMode(int)で使う
アプリやActivityが検索に定義してないと
キーは無視される

public int DEFAULT_KEYS_SHORTCUT
デフォルトのキー処理において
メニューのショートカットを実行するため
setDefaultKeyMode(int)
で使う

public int RESULT_CANCELLED
標準のActivityの結果で操作がキャンセルされたことを示す

public int RESULT_FIRST_USER
ユーザー定義のActivityの結果の最初の値

public int RESULT_OK
標準のActivityの結果で、操作語成功したことを示す

Android API level 16 で追加されたメソッドその2

Android API level 16 で追加されたメソッドその2

public void startIntentSenderForResult(IntentSender intent, int requestCode, Intent fillInintent, int flagsMask, int flagsValues , int extraFlags, Bundle options)
startActivityForResult(Intent,int)に似てるけど
起動するActivityを記述するために
IntentSenderを使うことができる

IntentSenderがActivityのためなら
startActivityForResult(Intent,int)の呼び出しのように
そのActivityが開始される

それ以外なら
IntentSender.sendIntentを呼び出すように関連付けられたアクション
例えばBroadcastなどが実行される

IntentSender.SendIntentExceptionがスローされる

引数のintentは、起動するためのIntentSender

requestCodeは、0以上ならActivityが終了する際に
startActivityForResult(Intent,int)で説明されている
onActivityResult()内で返される値

fillInIntentは、nullでないなら、Intentのparameterとして
sendIntent(Context,int,Intent,IntentSender.OnFinished,Handler)
に提供される

flagsMaskは、変更したいオリジナルのIntentSenderにあるIntentFlag

flagsValuesは
flagsMaskに設定されている任意のビットの変更したい値

extraFlagsは、常に0

optionsは、どのようにActivityを開始するべきかを示す追加オプション
もし、オプションもIntentSenderにより与えられている場合、上書きされる

public void startIntentSenderFromChild(Activity child, IntentSender intent, int requestCode, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options)
startActivityFromChild(Activity,Intent,int,)に似てるけど
こっちは、IntentSenderを取り入れている
IntentSender.SendIntentExceptionをスローする

public boolean startNextMatchingActivity(Intent intent, Bundle options)
他のActivityのコンポーネント置き換えて使うときに、Activityを開始する特別なバージョン

Intentを扱う次のActivityへIntentを手渡すのに使う
通常は、getIntent()で返されるIntentを使い
onCreate(Bundle)の中でこのメソッドを呼び出す

引数のintentは、次のActivityにdispatchするIntent
正しい動作のために、Activityを開始したIntentと同じであること
変更は、そのなかのExtraにある

optionsは、どのようにActivityが開始されるかを示す追加オプション

戻り値は、開始するためのActivityがあるかどうかを示すプール値
開始するための次のActivityがあればtrue
なければfalse

trueなら、その後finish()を呼び出す必要がある

Androidで文字の配置場所の変更

Androidで文字の配置の変更

ボタンやTextViewなどで表示される文字の配置場所を変更するには
android:gravity=””
で設定する

使い方としては
文字を左揃え、中央揃え、右揃えとしたり
上下、中央、左右の好きな場所へ配置するなどなど

なお、配置場所は |
これで区切ることで、組合せを作り
右上とかにすることができる

右上にするなら、上と右の組合せなので
“right|top”
とする

とりあえず、TextViewでそれぞれの例を
レイアウトファイルで書いてみる
 
ちなみに、
layout_width=”wrap_content”
とか
layout_height=”wrap_content”
にすると、幅をあわせてしまうので
たいていは表示する大きさを指定することになる

<TextView
android:id="@+id/text"
android:layout_width="200dip"
android:layout_height="50dip"
android:gravity="left|top"
android:text="左上"/>

<TextView
android:id="@+id/text2"
android:layout_width="200dip"
android:layout_height="50dip"
android:gravity="right|top"
android:text="右上"/>

<TextView
android:id="@+id/text3"
android:layout_width="200dip"
android:layout_height="50dip"
android:gravity="right|bottom"
android:text="右下"/>

<TextView
android:id="@+id/text4"
android:layout_width="200dip"
android:layout_height="50dip"
android:gravity="left|bottom"
android:text="左下"/>

というかんじ

TextView以外にはリスト表示するときとか
画像と合わせて表示するときなどに使える

Android API level 16 で追加された関数のメモ

Android API level 16 で追加された関数のメモ

public void finishAffinity()
このActivityと現在のタスク内で同じ親和性を持っているすべてのActivityを終了する

これは、通常、アプリがコンテンツタイプのACTION_VIEWなどからベツのタスクを起動し
ユーザーが現在のタスクから独自のタスクへ切り替えるためのアップナビゲーションに使われる

このケースでは、 
ユーザーが2つめのアプリの他のActivityへダウンナヒゲートした場合 
タスクの切り替えの一部として
元のアプリのActivityのすべてが
元のタスクから削除かれる必要がある

この終了処理は、前のActivityへ結果を提供できないし、例外がスローされる

public Intent getParentActivityIntent()
このActivityの論理的な親と指定される明示的なターゲットactivityを起動するIntentを取得

論理的な親は、parentActivityName属性によりアプリの
AndroidManifest.xmlで指定される

Activityのサブクラスは、
super.getParentActivityIntent()
により返されるIntentを変更したり
親のIntentを取得する全く別のメカニズムを実装したりするために
このメソッドをOverrideする事ができる

戻り値は、Activityの定義された親を対象にした新しいIntent
有効な親がないならnullになる

public boolean navigateUpTo(Intent upIntent)
プロセス内のこのActivityを終えて
ActivityからupIntentで指定されたActivityへ移動する

Activityは、upIntentにより示されたActivityが履歴スタック内に存在している場合、
履歴スタック内の指定されたActivityの前に、このActivityとほかのすべてが終了となる

指定されたActivityが
履歴スタックにない場合、
in-ap home
という動作の結果として
タスクのroot Activityに達するまで、
このタスク内の各Activityを終了する

これは、Activityが正規の親Activityを通過しない経路で到達される、複雑なナビゲーション階層を持つアプリで役立つ

このメソッドは、移動先と同じタスク内でのアップナビゲーションを実行するときに使う必要がある

アップナビゲーションが複数のケースで、タスク交換の必要があるなら
shouldUpRecreateTask(Intent)
を参照する

引数のUpIntent
これはアップナビゲーションのためのターゲット先を表すIntent

戻り値は、アップナビゲーションがupIntentにより示されたActivityにうまく到達し
upIntentが配信されたときにtrueになる

指定されたActivityのインスタンスが見つからず
このActivityが単に終了した場合
falseになる

public boolean navigateUpToFromChild(Activity child, Intent upIntent)
このActivityの子Activityが
navigateUpTo(Intent)
を呼び出したときに呼ばれる

デフォルト実装は、単にこの親Activityの
navigateUpTo(Intent)を呼び出す

引数のchildは、呼び出しを行うActivity

upIntentは、アップナビゲーションのためのターゲット先を表すIntent

戻り値は、アップナビゲーションがupIntentにより示されたActivityに到達し、Intentが配信されたときにtrue

指定でれたActivityのインスタンスが見つからず
Activityが正常終了した場合はfalse

public void onCreateNavigateUpTaskStack(TaskStackBuilder builder)
別のタスクからのアップナビゲーション中に生成される合成タスクスタックを定義する

このメソッドのデフォルト実装は、
AndroidManifest.xmlへ指定されたActivityの親チェーンを与えられた
TaskStackBuilderに追加する

アプリは別の方法で目的のTaskのStackを構築するため
このメソッドをOverrideできる

getParentActivityIntent()が返却するIntentを与えられたshouldUpRecreateTask(Intent)
がtrueなら
onNavigateUp()のデフォルト実装により呼び出される

AndroidManifest.xmlで定義されている親Stackに
特別なIntentParameterを指定したいアプリは
onPrepareNavigateUpTaskStack(TaskStackBuilder)
をOverrideする必要がある

引数のbuilderは
空のTaskStackBuilder
アプリは、目的のTaskStackを表すIntentを追加する必要がある

public boolean onNavigateUp()
ユーザーがアクションバーからアプリのActivity階層内で
上に移動することを選択するたび
このメソッドが呼び出される

parentActivityName属性がAndroidManifest.xml内で
このActivityやActivity aliasのために指定されている場合、
デフォルトのアップナビゲーションは
自動的に処理される

親チェーンに沿った任意のActivityが特別なIntentの引数を必要とするなら
Activityのサブクラスは
これらの引数を与えるためのメソッド
onPrepareNavigateUpTaskStack(TaskStackBuilder)
をOverrideする必要がある

詳しくは、developer guideの
navigation
task
backstack
を参照

カスタムアップナビゲーションの実装には
TaskStackBuilderクラスと
Activityのメソッドの
getParentActivityIntent()
shouldUpRecreateTask(Intent)
および
navigateUpTo(Intent)
を参照

さらに
Android SDKのAppNavigationのサンプルアプリは
リファレンスに使える

戻り値は、アップナビゲーションが正常に完了し、Activityが終了したらtrue
それ以外ならfalse

public boolean onNavigateUpFromChild(Activity child)
これは、Activityの子Activityがアップナビゲーションしようとしたときに呼び出される
デフォルト実装は、親ActivityのonNavigateUp()
を呼び出す

引数のchildは、呼び出しを行うActivity

public void onPrepareNavigateUpTaskStack(TaskBuilder builder)
別のタスクからアップナビゲーション中に生成される合成タスクスタックを準備する
このメソッドは、onCreateNavigateUpTaskStack(TaskStackBuilder)
により生成されたIntentの構成したシリーズを持つTaskStackBuilderを受け取る
新しいタスクを起動する前に、特別なデータが、これらのIntentに追加される必要がある場合、
アプリはこのメソッドをOverrideし、そのデータを追加する必要がある

引数のbuilderは、
onCreateNavigateUpTaskStackで
Intentが移入されたTaskStackBuilder

public boolean should UpRecreateTask(Intent targetIntent)
TargetIntentを使い、このActivityからアップナビゲーションする際に
アプリが、タスクを再生成する必要があるならtrue

このメソッドがfalseなら
アプリは正確にアップナビゲーションを実行するため
同じパラメーターを使ってnavigateUpTo(Intent)を呼び出すことができる

これもfalseなら
アップナビゲーションをする際にアプリがタスクを再構築する必要があるならtrue
このメソッドがfalseなら、アプリは正確にアップナビゲーションを実行するため
同じパラメーターを使い
navigationUpTo(Intent)を呼び出せる

このメソッドがfalseなら
アップナビゲーションを実行するため
TaskStackBuilder
または同様のメカニズムを利用し
アプリは新しいタスクスタックを合成する必要がある

引数の targetIntentは
アップナビゲーションのためのターゲット先を表すIntent

戻り値は、アップナビゲーションが新しいタスクスタックを再生成する必要があるならtrue
同じタスクが宛先に使われるならfalse

public void startActivities(Intent[] intents, Bundle options)
新しいActivityを起動
Activityが終了するときの情報の受け取りはできない
この実装は、起動を行うActivityに関する情報を提供し、ベースバージョンを上書きする
この追加情報のための
FLAG_ACTIVITY_VIEW_TASK
起動フラグは必須ではない

指定していない場合、新しいActivityは、呼び出し元のタスクへ追加される

与えられたIntentを実行するためのActivityが見つからないと
ActivityNotFoundExceptionをスローする

引数のIntentは、
開始するためのIntent

optionsは、どのようにActivityが開始されるか示すオプション

public void startActivity(Intent intent, Bundle options)
新しいActivityを起動する
Activityが終了する際の情報は受け取れない
この実行は、起動を行うActivityに関する情報を提供し、
ベースバージョンを上書きする

この追加情報のための
FLAG_ACTIVITY_NEW_TASK
起動フラグは必須ではない

指定していない場合
新しいActivityは、呼び出し元のタスクへ追加される

与えられたIntentを実行するためのActivityが見つからないと
ActivityNotFoundExceptionをスローする

引数のIntentは、開始するためのIntent

optionsは、どのようにActivityが開始されるべきかを示す追加オプション

public void startActivityForResult(Intent intent, int requestCode, Bundle options)
Activity終了時の結果を希望してActivityを起動する
このActivityが終了すると、
onActivityResult()は、requestCodeを与えられ呼び出される
requestCodeに負の値を指定して
startActivity(Intent)を呼び出すのと同じ
注意点としては、
このメソッドは結果だけを返すように定義されているIntentのプロトコルで使うこと

他のプロトコルでは結果を得ることはできない

例えば、singleTask起動モードでActivityを起動すると、
タスク内で起動せず、すぐにキャンセルの結果を受け取る

特別な場合として、Activityの最初のonCreate(Bundle savedInstanceState)
onPause()内で
0以上のrequestCodeの値で
startActivityForResult()を呼び出した場合
開始されたActivityから結果が戻ってくるまでウインドウは表示されない

これは別のActivityへのリダイレクト時に目に見えるちらつきを防ぐため

与えられたIntentを実行するための
Activityが見つからないと
ActivityNotFoundExceptionをスローする

引数のintentは
開始するためのIntent

requestCodeは、0以上ならActivityが終了する際に
onActivityResult()内で返される値

optionsは、どのようにActivityが開始されるべきかを示す追加オプション

public void startActivityFromChild(Activity child, Intent intent, int requestCode,, Bundle options)
このActivityの子Activityが
startActivity(Intent)または
startActivityForResult(Intent,int)を呼び出したときに呼ばれる

与えられたIntentを実行するためのActivityが見つからないと
ActivityNotFoundExceptionをスローする

引数のchildは、呼び出しを行うActivity

intentは、開始するためのIntent

requestCodeは、requestCodeへの戻り値
戻り値が要求されてないと0未満の値になる

optionsは、どのようにActivityが開始されるべきかを示す追加オプション

public void startActivityFromFragment(Fragment fragment, Intent intent, int requestCode, Bundle options)
このActivityのfragmentが 
startActivity(Intent)
または
startActivityForResult(Intent,intent)
を呼び出したときに呼び出される

与えられたIntentを実行するためのActivityが見つからないと
ActivityNotFoundExceptionをスローする

引数のfragmentは
呼び出しを行うFragment

intentは、開始するためのIntent

requestCodeは、requestCodeへの戻り値
戻り値が要求されてないと0未満の値になる

optionsは、どのようにActivityが開始されるべきかを示す追加オプション

public boolean startActivityIfNeeded(Intent intent,int requestCode, Bundle options)
与えられたIntentを処理するため
新しいインスタンスが必要な場合のみ
Activityを起動するための特殊バリエーション

FLAG_ACTIVITY_SINGLE_TOPフラグ
または、singleTask
またはsingleTop起動モードと
現在実行中のActivityと同じIntentを処理するActivityを使っている場合は
新しいインスタンスは必要ない

この場合
onNewIntent(Intent)を呼び出すという普通の振る舞いの代わりに
この関数は戻り、自分でIntent処理ができるようになる

この関数は、トップレベルのActivityからのみ呼び出すことができる

子Activityから呼び出すと
ランタイム例外がスローされる

引数のintentは、開始するためのIntent

requestCodeは、0以上ならActivityが終了する際に
startActivityForResult(Intent,int)

説明されているonActivityResult()内で返される値

optionsは、どのようにActivityが開始されるかを示す追加オプション

戻り値は、新しいActivityが起動された場合はtrue
そうでないならfalseとなり
Intentを自分で処理する必要がある

public void startIntentSender(IntentSender intent, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options)
startActivity(Intent,Bundle)に似てるけど
開始するためにIntentSenderを取り入れている
IntentSender.SendIntentExceptionがスローされる

引数のintentは
起動するためのIntentSender

fillInIntentは、nullでないならIntentのparameterとしてsendIntent(Context, int, Intent, IntentSender.OnFinished, Handler)に提供される

flagsMaskは、変更したいオリジナルのIntentSenderにある
IntentFlag

flagValuesは、flagsMaskに設定されている任意のビットの変更したい値

extraFlagsは、常に0

optionsは、どのようにActivityが開始されるべきかを示す追加オプション
もし、オプションもIntentSenderにより与えられているなら
上書きされる

長い文字列の省略表示

長い文字列の省略表示

TextViewで表示するときに
画面に入らないぐらいに
文字列が長いと途中で切り捨てられる

こんなときには、ブログとかでよくみる

で続くように表示できるので、これを使う

やり方は
レイアウトで
android:ellipsize=”end”
android:singleLine=”true”
を設定

ただし

[Android] 今後利用が推奨されないプロパティ


によれば
singleLine=”true”
から
maxLines=”1″
になるらしい

あと、複数行で末尾省略するには
android:scrollHorizontally=”true”
も必要

これについては
http://qiita.com/hackugyo/items/e23ecfda14bdfc672e7c
を参考にさせていただきました

レイアウトファイルのソース部分は

<TextView
android:id="@+id/text"
android:layout_width="200dip"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLine="1"
android:text="レイアウトファイルによる省略文字の設定: お試し"/>

そして、プログラムで制御するなら
まずはレイアウトファイルのほうで
TextViewへidを付けて、それに対するプログラムを書く

まずは、レイアウトのソース

<TextView
android:id="@+id/text2"
android:layout_width="200dip"
android:layout_height="wrap_content"
android:text="" />

次に制御するJavaのソース
これは、onCreate()の中に書く

TextView text2 = (TextView)findViewById(R.id.text2);
text2.setEllipsize(TruncateAt.END);
text2.setMaxLines(1);
text2.setText("プログラミングで設定した省略文字の設定: お試し その2");

これらの set….に関しては
http://wikiwiki.jp/android/?UI%A5%B3%A5%F3%A5%DD%A1%BC%A5%CD%A5%F3%A5%C8%2FTextView
にまとめられているので参考に