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により与えられているなら
上書きされる

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です