MyException - 我的异常网
当前位置:我的异常网» Android » Android 累积

Android 累积

www.MyException.Cn  网友分享于:2013-08-22  浏览:19次
Android 积累

 

创建手机模拟器时:

屏幕分辨率

HVGA:320×480

QVGA:240x320

WQVGA400:240X400

WQVAG432:240X432

WVGA800: 480X800

WVGA854: 480X854

 WebView,WebViewClient,WebChromeClient的关系

在WebView的设计中,不是什么事都要WebView类干的,有些杂事是分给其他人的,这样WebView专心干好自己的解析、渲染工作就行了。WebViewClient就是帮助WebView处理各种通知、请求事件的,具体来说包括:

  onLoadResource

  onPageStart

  onPageFinish

  onReceiveError

  onReceivedHttpAuthRequest

 

WebChromeClient是辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等

  onCloseWindow(关闭WebView)

  onCreateWindow()

  onJsAlert (WebView上alert是弹不出来东西的,需要定制你的WebChromeClient处理弹出)

  onJsPrompt

  onJsConfirm

  onProgressChanged

  onReceivedIcon

  onReceivedTitle

 

 

安装Android应用

<!-- 安装程序权限 -->
    <uses-permission android:name="android.permission.INSTALL_PACKAGES"/>

代码:

 private EditText filenameText;//在sd卡中的路径
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button button=(Button)this.findViewById(R.id.button);
        filenameText=(EditText) this.findViewById(R.id.filename);
        button.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
     Intent intent = new Intent();
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//标志,代表我要启动一个新的任务
     //action=android.content.Intent.ACTION_VIEW
     //category=android.intent.category.DEFAULT
     //data:type=application/vnd.android.package-archive
     intent.setAction(android.content.Intent.ACTION_VIEW);
     Uri data=Uri.fromFile(new File(Environment.getExternalStorageDirectory(),filenameText.getText().toString()));
     intent.setDataAndType(data,"application/vnd.android.package-archive");
     startActivity(intent); 
    }else {
     Toast.makeText(InstallActivity.this,"SD卡不存在",Toast.LENGTH_LONG).show();
    }
   }
  });
    }

startManagingCursor(Cursor cursor)这个方法告诉活动应该根据该活动的生命周期来管理光标的生命周期。例如,当活动被暂停时,它将自动停用光标,然后在活动重启时重新查询该光标。当活动终止时,所有托管的光标也将关闭。

 stopManagingCursor(Cursor cursor)这个是停止根据该活动的生命周期来管理光标的生命周期。

在Android安全模式中,一个应用程序编写的文件无法被其他任何应用程序所读写。每个程序都有自己的Linux用户ID和数据目录(/data/data/包名),以及其受保护的内存空间。Android程序可通过下面两种方式进行彼此间的通信:

方式一  IPC(Inter-Process Communication,进程间通信):一个进程使用AIDL(Android Inteerface Definition Language,接口定义语言)和IBinder接口声明一个任意的API。调用该API时,将在进程间安全且有效地对参数进行编组。这个技术用于对后台Service线程进行远程过程调用。

方式二  ContentProvider:进程在系统中将它们本身注册为某些数据类型的提供者。详细见:http://justsee.iteye.com/blog/936612

 

 @Override

   public Cursor query(Uri uri, String[] projection,

         String selection, String[] selectionArgs, String orderBy) {

      if (uriMatcher.match(uri) == EVENTS_ID) {

         long id = Long.parseLong(uri.getPathSegments().get(1));

         selection = appendRowId(selection, id);

      }

 

      // Get the database and run the query

      SQLiteDatabase db = events.getReadableDatabase();

      Cursor cursor = db.query(TABLE_NAME, projection, selection,

            selectionArgs, null, null, orderBy);

      // Tell the cursor what uri to watch, so it knows when its source data changes

      cursor.setNotificationUri(getContext().getContentResolver(), uri);

      return cursor;

   }

 

这里要注意,这个观察者模式是从sdk level 1就有的,也就是说,cursor可以接收通知来感知content provider数据变化,但是不能做到异步刷新界面。这次1.6Loader机制通过官方支持实现了这个功能。

 

 private String appendRowId(String selection, long id) {
      return _ID + "=" + id
            + (!TextUtils.isEmpty(selection)
                  ? " AND (" + selection + ')'
                  : "");
   }		

组件(Service,Activity,BoardcastReceiver,ContentProvider)运行在应用程序进程的主线程中,所以组件不会阻塞其他组件和用户界面。

一旦需要通过这4种组件完成请求,Android会首先确认该组件所在的进程是否运行,如果没有运行,Android将启动进程,同时确认被请求组件的实例是否存在,否则将创建一个新的组件实例。

findViewById(int id)原理:

View android.app.Activity.findViewById(int id),其中的id必须是之前已经设置为当前Activity主界面的XML布局文件中某个标签的id,否则findViewById会因为找不到View对象而返回null。

例如:

setContentView(R.layout.main);

fromSpinner = (Spinner) findViewById(R.id.from_language);

 

当需要引用其他XML布局文件中的View的时候,首先要根据XML的布局文件的设置构造View对象,然后View android.view.View.findViewById(int id)

例如:

LinearLayout mainLayout=(LinearLayout)getLayoutflater().inflate(R.layout.main , null);

TextView tv=(TextView)mainLayout.findViewById(R.id.textview1);

tv.setText(R.string.hello);

setContentView(mainLayout);

 

 

 

 

文章评论

程序员和编码员之间的区别
程序员和编码员之间的区别
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
如何成为一名黑客
如何成为一名黑客
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
漫画:程序员的工作
漫画:程序员的工作
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
Java程序员必看电影
Java程序员必看电影
老程序员的下场
老程序员的下场
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序员都该阅读的书
程序员都该阅读的书
为什么程序员都是夜猫子
为什么程序员都是夜猫子
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
 程序员的样子
程序员的样子
代码女神横空出世
代码女神横空出世
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
10个调试和排错的小建议
10个调试和排错的小建议
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
那些争议最大的编程观点
那些争议最大的编程观点
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
一个程序员的时间管理
一个程序员的时间管理
我是如何打败拖延症的
我是如何打败拖延症的
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序员必看的十大电影
程序员必看的十大电影
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
编程语言是女人
编程语言是女人
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
程序员的鄙视链
程序员的鄙视链
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
程序员应该关注的一些事儿
程序员应该关注的一些事儿
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有