Administrator
发布于 2024-04-10 / 10 阅读
0
0

安卓面试复盘.1

【面试复盘】

1.apt 动态生成代码 多模块

2.jni 步骤 【ok】

写一个native方法

对应这个方法在cpp中实现代码逻辑

System.loadLibrary()

cmakelists.txt addlirary 添加定义cpp

3.webview html5 互调

webView.addJavascriptInterface webView.evaluateJavascript

class WebViewActivity : AppCompatActivity() {

    lateinit var  webView :WebView

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

        webView = findViewById(R.id.webview)

        webView.loadUrl("file:///android_asset/demo.html")
        webView.settings.javaScriptEnabled = true
        webView.webViewClient = object :WebViewClient(){
            override fun shouldOverrideUrlLoading(
                view: WebView?,
                request: WebResourceRequest?
            ): Boolean {
                val url = request?.url.toString()
                if (url.startsWith("tel:")){//## html 打电话:tel
                    val intent = Intent(Intent.ACTION_DIAL , Uri.parse(url))
                    startActivity(intent)
                    return true ;
                }else  if(url.startsWith("mailto:")){//html 打电话
                    val intent = Intent(
                        Intent.ACTION_SENDTO,
                        Uri.parse(url)
                    )
                    startActivity(intent)
                    return true ;
                }
                return super.shouldOverrideUrlLoading(view, request)
            }
        }

		//使用这个类,使得html 里的点击,能调原生的方法
        webView.addJavascriptInterface(MyJavaScriptInterface(),"AndroidInterface")

		//##点击原生按钮,使得html 里的javascript的方法调用
        findViewById<Button>(R.id.btn).setOnClickListener{
            val time = System.currentTimeMillis()
            webView.evaluateJavascript("javascriptMethodName($time)" ,object : ValueCallback<String>{
                override fun onReceiveValue(value: String?) {
                    Toast.makeText(getApplicationContext(), value, Toast.LENGTH_SHORT).show()

                }

            })
        }

    }

	//定义javascript类和方法
    inner class MyJavaScriptInterface {
        @JavascriptInterface
        fun showToast(message: String?) {
            Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show()
        }
    }

}

4.jvm 内存 内存模型

5.存储文件方式 mmkv 【ok】

sharep

6.google上架

1.使用代理

2.买个外网的window服务器,远程桌面 ,然后通过浏览器访问

7.firbase 推送

8.handle Loop 和 handle 的数量

一个loop 对应多个handle

9.暗黑模式

values-night


评论