Blog-05-《一週快速上手Kotlin For Android》-

longmanma發表於2021-09-09

---《一週快速上手Kotlin For Android》簡介

目前Kotlin已正式成為Android的官方語言,作為Android開發者來說,學習和了解Kotlin也是屬於理所當然的事情,興許你覺得Java對於你來說才是真正的開發”利器”,使用Java你能發揮更高的效率,當然,如果如此你還是可以繼續使用Java來開發Android。但對於Kotlin來說,開發Android會變得更簡單一些,因為Kotlin其實就是Android開發中的語法糖,採用更簡短的程式碼,描述更多的邏輯而已。開發語言本身就沒有對錯和最優,每個開發語言被開發出來的時代背景不同,需要解決的主要問題也不同。選擇適合你自己的就可以。

BroadcastReceiver工作過程

圖片描述

Java 傳送廣播:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn_send = findViewById(R.id.btn_send);
        btn_send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction("ACTION_TEST");
                intent.putExtra("VALUE", 123);
                sendBroadcast(intent);
            }
        });
    }

}

Kotlin 傳送廣播:

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val btn_send = findViewById

Java接收廣播:

public class Main2Activity extends AppCompatActivity {

    private static final String TAG = "Main2Activity";

    private MyReceiver myReceiver;
    private IntentFilter intentFilter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        Log.d(TAG, "onCreate");
        myReceiver = new MyReceiver();
        intentFilter = new IntentFilter();
        intentFilter.addAction("ACTION_TEST");

        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
    }


    @Override
    protected void onResume() {
        super.onResume();
        registerReceiver(myReceiver, intentFilter);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(myReceiver);
    }

    private class MyReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            if(intent.getAction().equals("ACTION_TEST")){
                int value = intent.getIntExtra("VALUE", 0);
                Log.i(TAG, "onReceive value: " + value);
            }
        }

    }


}

Kotlin接收廣播:

class Main2Activity : AppCompatActivity() {

    private var myReceiver: MyReceiver? = null
    private var intentFilter: IntentFilter? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)

        Log.d(TAG, "onCreate")
        myReceiver = MyReceiver()
        intentFilter = IntentFilter()
        intentFilter!!.addAction("ACTION_TEST”)

        val intent = Intent(this, MainActivity::class.java)
        startActivity(intent)
    }


    override fun onResume() {
        super.onResume()
        registerReceiver(myReceiver, intentFilter)
    }

    override fun onDestroy() {
        super.onDestroy()
        unregisterReceiver(myReceiver)
    }

    private inner class MyReceiver : BroadcastReceiver() {

        override fun onReceive(context: Context, intent: Intent) {
            if (intent.action == "ACTION_TEST") {
                val value = intent.getIntExtra("VALUE", 0)
                Log.i(TAG, "onReceive value: " + value)
            }
        }

    }

    companion object {

        private val TAG = "Main2Activity"
    }


}

原文連結:http://www.apkbus.com/blog-55128-78020.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2730/viewspace-2811599/,如需轉載,請註明出處,否則將追究法律責任。

相關文章