今天宠物迷的小编给各位宠物饲养爱好者分享android 加载效果的宠物知识,其中也会对android activity用哪种加载模式好进行专业的解释,如果能碰巧解决你现在面临的宠物相关问题,别忘了关注本站哦,现在我们开始吧!
Android四种Activity的加载模式一个Activty的生命周期Activty的生命周期的也就是它所在进程的生命周期。每一个活动(Activity)都处于某一个状态,对于开发者来说,是无法控制其应用程序处于某一个状态的,这些均由系统来完成。 但是当一个活动的状态发生改变的时候,开发者可以通过
你是在主线程加载的吧,这些耗时操作应该放在子线程中做,创建一个Thread来做加载数据的操作,加载完成,把数据用handler发送出来,再用listview显示就好了。在没有加载完成的这段时间,可以用一个progress dialog提示正在加载。
1、不是所有浏览器都支持html5 的canvas ,也不是所有支持html5的就一定支持 canvas
2、如果你黑屏的那个webview支持canvas 的话,基本上就是代码的问题了,因为浏览器不同,有些浏览器支持这个属性,还有的就不支持,很正常,在代码中用alert调试一下就能找出来了
IndexOutOfBoundsException 这个异常是数组下标越界了
应该是你的ListView + Adapter写的有问题
我这有个ListView 滑动最下后,异步加载数据的demo
ListView 滑动最下面以后,异步加载,分页加载数据
代码明天再上传
可以用js加载css。
webview.setWebViewClient(new WebViewClient() {
....
public void onPageFinished(WebView view, String url) {
src="file:///android_asset/xxx.js"
String baseUrl = "file:///android_asset";
view.loadDataWithBaseURL(baseUrl, strHtml, "text/html", "utf-8", null);
}
....
}
js文件如下:
function loadjscssfile(filename,filetype){
if(filetype == "js"){
var fileref = document.createElement('script');
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src",filename);
}else if(filetype == "css"){
var fileref = document.createElement('link');
fileref.setAttribute("rel","stylesheet");
fileref.setAttribute("type","text/css");
fileref.setAttribute("href",filename);
}
if(typeof fileref != "undefined"){
document.getElementsByTagName("head")[0].appendChild(fileref);
}
}
调用方式:
loadjscssfile("test.css","css");
可以用js加载css。
webview.setWebViewClient(new WebViewClient() {
....
public void onPageFinished(WebView view, String url) {
src="file:///android_asset/xxx.js"
String baseUrl = "file:///android_asset";
view.loadDataWithBaseURL(baseUrl, strHtml, "text/html", "utf-8", null);
}
....
}
js文件如下:
function loadjscssfile(filename,filetype){
if(filetype == "js"){
var fileref = document.createElement('script');
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src",filename);
}else if(filetype == "css"){
var fileref = document.createElement('link');
fileref.setAttribute("rel","stylesheet");
fileref.setAttribute("type","text/css");
fileref.setAttribute("href",filename);
}
if(typeof fileref != "undefined"){
document.getElementsByTagName("head")[0].appendChild(fileref);
}
}
调用方式:
loadjscssfile("test.css","css");
1.减小主线程的阻塞时间
若一个操作耗时教长(超过5秒 用户无响应5秒 网络和数据库阻塞10秒 广播接收者执行超过10秒会导致ANR),我们应该将其放入后台线程中执行,只在需要修改UI界面时通知主线程进行修改。
Android已经提供了AsynTask以实现从主线程生成新的异步任务的方法。具体用法参见异步任务。
2.提高Adapter和AdapterView的效率
(1)重用已生成过的Item View
(2) 添加ViewHolder
(3) 缓存Item的数据
(4)分段显示
3.优化布局文件
如果我们的布局层次过多,那么在我们用findViewById的时间必然会变多,一个变多可能不要紧,但是有很多调用必然会影响性能。
(1) 使用观察布局的工具 Hierarchy Viewer
(2)使用布局优化工具: Layoutopt
(3)优化布局的层次结构
4.背景图
某些时候,我们可能希望能够尽可能多的提高Activity哪怕一点点的性能,这时候我们可以考虑优化Activity背景图。
首先我们必须知道,在android的Activity中,不止有你使用的setContentView时使用的View,还包含一些其它的View。其根View是一个DecorView,你设置的View就包含在其中,id为content。
(1)使用getWindow().setBackgroundDrawable()
(2)自定义主题
创建文件res/vlaues/theme.xml
@null
可根据需要将windowBackground设置为null或你需要的背景图
2.在或者标签中添加 android:theme="@style/Theme.CustomBackground"
5.使用ViewStub
ViewStub是一个看不见,轻量级的View。它没有尺寸,也不会绘制以及以某种形式参与到布局中来。当只有调用Inflate之后其中的View才会被实例化,这意味着用ViewStub保留View层次结构代价是
(1) 延迟加载不常用的UI控件
当某些控件只在很少情况下才会使用,我们可以使用ViewStub来延迟加载,以提高UI加载速度及减小内存消耗。
[java] view plaincopy
public class DelayLoadActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.delay_load);
Button btn = (Button) findViewById(android.R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
v.setEnabled(false);
ViewStub stub = (ViewStub) findViewById(R.id.stub);
View inflated = stub.inflate();
}});
}
}
(2)提高改变布局的速度
需要使用的场景
界面需要频繁切换
希望能提高切换速度
使用方法(以横竖换屏为例)
1.设置Activity的android:configChanges属性为keyboardHidden|orientation
2.为横竖屏分别编写不同的layout
3.创建一个layout,并包含两个ViewStub(分别对应横竖屏)
4.在横竖屏,通过调用ViewStub.inflate创建当前View并将另外一个设为GONE
5.绑定并设置控件的状态
1、可以是用loadData,这种方法需要先将html文件读取出来,以字符串传入loadData,可以展示页面,但是不会引用css、js等文件。
2、使用loadUrl,不过需要注意,这里因为是使用本地数据,所以传入的url需要做些处理,例如:
a、如果html文件存于assets:则加前缀:file:///android_asset/
b、如果html文件存于sdcard:则加前content://com.android.htmlfileprovider/sdcard/
注意:content前缀可能导致异常,直接使用file:///sdcard/ or file:/sdcard也可以
1、可以是用loadData,这种方法需要先将html文件读取出来,以字符串传入loadData,可以展示页面,但是不会引用css、js等文件。
2、使用loadUrl,不过需要注意,这里因为是使用本地数据,所以传入的url需要做些处理,例如:
a、如果html文件存于assets:则加前缀:file:///android_asset/
b、如果html文件存于sdcard:则加前content://com.android.htmlfileprovider/sdcard/
注意:content前缀可能导致异常,直接使用file:///sdcard/ or file:/sdcard也可以
本文由宠物迷 百科常识栏目发布,非常欢迎各位朋友分享到个人朋友圈,但转载请说明文章出处“android activity用哪种加载模式好”