散装アンドロイド開発ノート

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。