Android开发----WebView&Activity生命周期
WebView
webview是一个再应用中设置好位置和大小的浏览器,而且不会放置任何花哨的UI。
在大多数情况下,除非你调用了原生API,否则不必在webview中专门测试web应用。
首先为WebView新建一个活动,并为其增加一个WebView控件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/wv_1"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
在app中调用本地html文件
使用loadUrl函数调用放在assets中的HTML文件。
首先需要新建一个assets,并在其中添加一个text.html文件。

调用函数:
public class WebViewActivity extends AppCompatActivity {
private WebView wb1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
wb1 = findViewById(R.id.wv_1);
wb1.loadUrl("file:///android_asset/text.html");
}
在app中调用网络网页资源
需要用到的函数及其功能:
setJavaScriptEnabled(true):假设访问的页面中有Javascript,则webview必须设置支持Javascript。setWebViewClient():在影响View的事件到来时,会通过WebViewClient中的方法回调通知用户。setWebChromeClient():当影响浏览器的事件到来时,就会通过WebChromeClient中的方法回调通知用法。
代码如下(需要手写回调函数):
public class WebViewActivity extends AppCompatActivity {
private WebView wb1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
wb1 = findViewById(R.id.wv_1);
wb1.getSettings().setJavaScriptEnabled(true);//JS
wb1.setWebViewClient(new MyWebViewClient());
wb1.setWebChromeClient(new MyWebChromeClient());
wb1.loadUrl("https://m.baidu.com");
}
class MyWebChromeClient extends WebChromeClient {
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
}
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
setTitle(title);
}
}
class MyWebViewClient extends WebViewClient{
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(request.getUrl().toString());
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.d("WebView","stater");
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.d("WebView","adsfdsf");
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && wb1.canGoBack())
{
wb1.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
加载页面如图:

Android开发----WebView&Activity生命周期的更多相关文章
- Android开发之---Activity生命周期
Android开发中,有四大组件:Activity.Service.Content Provider.Broadcast Receiver,可以说,activity的使用是最频繁的了,这里来梳理一下与 ...
- 【Android实验】第一个Android程序与Activity生命周期
目录 第一个Android程序和Activity生命周期 实验目的 实验要求 实验过程 1. 程序正常启动与关闭 2. 外来电话接入的情况 3. 外来短信接入的情况 4. 程序运行中切换到其他程序(比 ...
- Android-管理Activity生命周期 -重新创建Activity
按照正常的app行为,很少情况下activity会销毁,只有当用户点击了返回按钮或者activity通过调用finish()发出销毁信号.系统也有可能销毁activity如果它是停止状态并且很久没有使 ...
- Android-管理Activity生命周期 -停止和重启Activity
停止和重启activity在activity的生命周期中很重要,它能让用户感觉你的app总是激活的而且不会丢失他们的进度.activity在下面的这些情况会停止和重启: 用户打开常用app窗口然后从你 ...
- Android-管理Activity生命周期 -暂停和恢复一个Activity
在正常的使用app时,前台的activity有时候会被可见的组件阻塞导致activity暂停.比如,当打开一个半透明的activity(就像打开了一个对话框),之前的activity就会暂停.只要ac ...
- Android-管理Activity生命周期 -开始一个Activity
很多程序都是从main()方法开始启动的,和其他程序不同,android是在activity生命周期的特定状态的特定回调方法中初始化代码的.activity启动和销毁的时候都用很多回调方法. 这里将要 ...
- 【Android 应用开发】Activity生命周期 与 Activity 之间的通信
一. Activity生命周期 上图 1. Activity状态 激活状态 : Activity出于前台 , 栈顶位置; 暂停状态 : 失去了焦点 , 但是用户仍然可以看到 , 比如弹出一个对话框 , ...
- Android体系结构及activity生命周期
Android的系统架构采用了分层架构的思想,如图1所示.从上层到底层共包括四层,分别是应用程序程序层.应用框架层.系统库和Android运行时和Linux内核 Android的系统架构图 每层 ...
- android学习笔记 activity生命周期&任务栈&activity启动模式
activity生命周期 完整生命周期 oncreate->onstart->onresume->onpause->onstop->ondestory 使用场景:应用程序 ...
随机推荐
- qt5之使用QtXlsxWriter库
note Qt version: 5.12 platform: os x 10.15 本文将介绍直接使用QtXlsxWriter源码 准备 下载QtXlsxWriter 使用Qt Creator 创建 ...
- TempCache 临时内存缓存器
TempCache.h /* *************************************************** * Copyright(c) Xiamen AutoNavi Co ...
- 【LeetCode】1471. 数组中的 k 个最强值 The k Strongest Values in an Array (Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 自定义排序 日期 题目地址:https://leetc ...
- 【LeetCode】872. Leaf-Similar Trees 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 中序遍历 先序遍历 后序遍历 日期 题目地址:htt ...
- 【剑指Offer】第一个只出现一次的字符 解题报告(Python)
[剑指Offer]第一个只出现一次的字符 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-intervie ...
- 【LeetCode】830. Positions of Large Groups 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- Android物联网应用程序开发(智慧城市)—— 用户注册界面开发
效果: 布局代码: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns: ...
- 从零开始学springboot-2.配置项目
### 配置项目 #### 将application.properties改名为application.yml #### 在resources文件夹中(和上面那个配置文件同一路径下)新建一个文件app ...
- SpringCloud集成Security安全(Eureka注册中心)
1.说明 为了保护注册中心的服务安全, 避免恶意服务注册到Eureka, 需要对Eureka Server进行安全保护, 本文基于Spring Security方案, 为Eureka Server增加 ...
- rocksdb代码解析-db.h
总 这篇是对rocksdb整体功能的分析,主要着眼点是db.h文件,对rocksdb进行代码解析,若想以整体的方式了解其功能,首先就应该解析db.h文件.对于rocksdb的db.h文件来说,且不论前 ...