いわゆる、onceですね
以下のコードはAndroid studioのBase Activityのテンプレートコードを改修しています。
class BasicActivity : AppCompatActivity() {
val onceExecute: Runnable? by lazy {
//ここに、一度しかやらない処理を書く
Log.d("TAG","execute!")
null
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_basic)
setSupportActionBar(toolbar)
fab.setOnClickListener { view ->
onceExecute?.run() //一度しか行わない処理
}
}
}
lazyを利用して、onceExecute内に処理を書いて、最後にnullを返します。
onceExecuteの返却はRunnableである必要はないのですが、.run()で繋げたほうが可読性としては良さそうなのでそうしてます。