散装アンドロイド開発ノート
4038 ワード
1.
override fun onSaveInstanceState(outState: Bundle)// activity stop
override fun onRestoreInstanceState(savedInstanceState: Bundle) // activity , 。 , activity activity , restore, activity , restore, restore 。 。。。
タスクのエントリポイントとしてActivityを設定できます.このActivityにintentフィルタを提供し、
"android.intent.action.MAIN"
を指定操作、"android.intent.category.LAUNCHER"
を指定カテゴリとします.例:
...
2.
タスクのエントリポイントとしてActivityを設定できます.このActivityにintentフィルタを提供し、
"android.intent.action.MAIN"
を指定操作、"android.intent.category.LAUNCHER"
を指定カテゴリとします.例:
...
このintentフィルタは、アプリケーションイニシエータにActivityのアイコンとラベルを表示し、ユーザーがActivityを起動し、起動後いつでもActivityが作成したタスクに戻ることができます.
2つ目の役割は、ユーザーがタスクから離れてからActivityイニシエータを使用してタスクに戻る必要があることです.したがって、Activityが
ACTION_MAIN
およびCATEGORY_LAUNCHER
フィルタを有する場合にのみ、"singleTask"
および"singleInstance"
の2つの起動モードが使用され、Activityは常にタスクを開始するようにマークされます.たとえば、フィルタが欠けている場合、intentが"singleTask"
Activityを起動し、新しいタスクを起動すると、ユーザーはタスクに時間を費やします.次に、ユーザーはメイン画面ボタンを押します.このタスクはバックグラウンドに移動し、表示されなくなります.アプリケーションイニシエータに表示されないため、ユーザーはタスクに戻ることができません.ユーザーがActivityに戻りたくない場合は、
要素のfinishOnTaskLaunch
を"true"
に設定します.3.
intentでデータを送信する場合は、データサイズを数KBに制限することに注意してください.データの送信が多すぎると、システムから
TransactionTooLargeException
が放出されます.4.
Binderトランザクション・バッファのサイズは固定的に制限されており、現在は1 MBであり、プロセスで処理中のすべてのトランザクションによって共有されています.この制限はActivityレベルではなくプロセスレベルの制限であるため、onSaveInstanceState、startActivity、システムとの相互作用など、アプリケーション内のすべてのbinderトランザクションが含まれます.サイズ制限を超えると、TransactionTooLargeExceptionが発生します.
savedInstanceStateの場合、ユーザーがActivityに戻ることができる限り、システムプロセスは提供されたデータを保持する必要があります(Activityのプロセスが終了しても).保存した状態を50 kデータ以下に保つことをお勧めします.
5.
さらに
add()
またはremove()
などの複数の変更をトランザクションに追加し、addToBackStack()
を呼び出すと、commit()
を呼び出す前に適用されたすべての変更が単一のトランザクションとして戻りスタックに追加され、戻りボタンによって取り消されます.FragmentTransaction
に変更を追加する順序は重要ではありませんが、次のようにします.commit()
を呼び出す必要があります.削除フラグメントのトランザクションを実行するときに
addToBackStack()
を呼び出さないと、トランザクションのコミット時にフラグメントが破棄され、ユーザーはフラグメントに戻ることができません.ただし、クリップを削除するときにaddToBackStack()
を呼び出すと、システムはクリップを停止し、ユーザーがロールバックしたときにリカバリします.ヒント:各セグメントトランザクションについて、コミット前に
setTransition()
を呼び出すことで遷移アニメーションを適用できます.1つの小さな点:Fragment要素をactivityのレイアウトXMLファイルに静的に書き込むと、このfragmentは「add」&「attach」が入ってきたときにFragmentの物事処理ではないため、ペアの「remove」「detach」の物事処理関数数は効果がありません.でもhideは
replace fragment( ), add fragment
, fragment ( fragment), fragment ( )
6.Fragmentのコールバックの順序
onAttach--->onCreate--->onCreateView--->onViewCreated--->onActivityCreated
Intent Activity, queryIntentActivities()
Intent
Activity 。 List
, Intent。 :
val activities: List = packageManager.queryIntentActivities(
intent,
PackageManager.MATCH_DEFAULT_ONLY
)
val isIntentSafe: Boolean = activities.isNotEmpty()
isIntentSafe
true
, Intent。 false
, Intent。