当前位置:  编程技术>移动开发
本页文章导读:
    ▪什么是九.png        什么是9.png     <table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td id="postmessage_162697" >什么是9.png:<br>       可能做过任务栏美化的同学都会知道,我靠,framework-res.........
    ▪ StartService 跟 bindService        StartService 和 bindService Service的生命周期方法比Activity少一些,只有onCreate, onStart, onDestroy我们有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。1 通过startService    Service会经.........
    ▪ 获取sdcard上的全部apk       获取sdcard上的所有apk     package com.shishixun.installapk;import java.io.file;<br>import java.io.filefilter;<br>import java.util.arraylist;import android.app.activity;<br>import android.content.pm.packageinfo;<br>.........

[1]什么是九.png
    来源: 互联网  发布时间: 2014-02-18
什么是9.png
    <table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td id="postmessage_162697" >什么是9.png:<br>       可能做过任务栏美化的同学都会知道,我靠,framework-res.apk\res\drawable-hdpi 目录下有非常非常多的xxxxxx.9.png图片。<br>千万不要以为这个9只是png格式图片的命名区分,其实他是一种特殊的格式,在png图片的基础上动了些手脚,而且这种手脚你会<br>看不见摸不着(详情见下面具体内容)。<br>       9.png格式的图片是安卓平台上新创的一种被拉伸却不失真的玩意(挺高级的吧),也许有<br>的同学在做美化的时候很喜欢一个图片素材,重命名替换了drawable-hdpi下的素材,但是运行系统后发现,怎么被拉伸得不像样子<br>了,哈哈,这就是9.png图片不能轻易碰的神奇所在,不过不要紧,下面看完你就会了,安卓美化大师就是你了。<br>      首先我们还是得介绍一下,9.png图片他的具体不同之处,它的四周与普通的png图片相比多了一个像素位的白色区域,该区域<br>只有在图片被还原和制造的时候才能看到,当打包后无法看见,并且图片的总像素会缩小2个像素,比如23x23像素的9.png图片被<br>打包后会变成21x21像素。所以我们在制作的时候要注意掌握尺寸。<br>       当我们制作出9.png图片的时候你还有惊奇的发现一个几kb或者几十kb的图片,变得非常的小,一般只有几百个字节那么大,<br>系统加载起来当然会更加的流畅咯。</td></tr></tbody></table><div>android tools下面有一个draw9patch.bat ,可以将一个png图片变成一个由9个补丁(patch)组成的png。并命名为9.png

    
[2] StartService 跟 bindService
    来源: 互联网  发布时间: 2014-02-18
StartService 和 bindService

Service的生命周期方法比Activity少一些,只有onCreate, onStart, onDestroy
我们有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。

1 通过startService
    Service会经历 onCreate --> onStart
    stopService的时候直接onDestroy

   如果是 调用者 直接退出而没有调用stopService的话,Service会一直在后台运行。
   下次调用者再起来仍然可以stopService。

2 通过bindService  
    Service只会运行onCreate, 这个时候 调用者和Service绑定在一起

   调用者退出了,Srevice就会调用onUnbind-->onDestroyed
   所谓绑定在一起就共存亡了。


注意:Service的onCreate的方法只会被调用一次,
就是你无论多少次的startService又 bindService,Service只被创建一次。
如果先是bind了,那么start的时候就直接运行Service的onStart方法,
如果先是start,那么bind的时候就直接运行onBind方法。如果你先bind上了,就stop不掉了,
只能先UnbindService, 再StopService,所以是先start还是先bind行为是有区别的。



Android中的服务和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。

服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务。
这两个方法都可以启动Service,但是它们的使用场合有所不同。使用startService()方法启用服务,调用者与服务之间没有关连,
即使调用者退出了,服务仍然运行。使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点。

如果打算采用Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,
接着调用onStart()方法。如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,
但会导致多次调用onStart()方法。采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法。

如果打算采用Context.bindService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,
接着调用onBind()方法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind()方法,
接着调用onDestroy()方法。如果调用bindService()方法前服务已经被绑定,
多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。
如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法.

    
[3] 获取sdcard上的全部apk
    来源: 互联网  发布时间: 2014-02-18
获取sdcard上的所有apk
    package com.shishixun.installapk;
import java.io.file;<br>import java.io.filefilter;<br>import java.util.arraylist;
import android.app.activity;<br>import android.content.pm.packageinfo;<br>import android.content.pm.packagemanager;<br>import android.graphics.drawable.drawable;<br>import android.os.bundle;<br>import android.text.format.formatter;<br>import android.util.log;
public class mainactivity extends activity {<br>    /** called when the activity is first created. */<br>    @override<br>    public void oncreate(bundle savedinstancestate) {<br>        super.oncreate(savedinstancestate);<br>        setcontentview(r.layout.main);<br>        final file appfolder = new file( "/sdcard" );<br>     arraylist<file> files = getfiles( appfolder,<br>    true );<br>     packagemanager pm = getpackagemanager( );<br>     for ( int i = 0, size = files.size( ); i < size; i++ )<br>  {<br>   file f = files.get( i );<br>   packageinfo pi= pm.getpackagearchiveinfo( f.getabsolutepath( ), 0 );<br>   if ( pi != null )<br>   {<br>    apkinfo holder = new apkinfo( );<br>    holder.file = f;<br>    holder.pkgname = pi.packagename;<br>    holder.size = f.length( );<br>    holder.sizestring = formatter.formatfilesize( mainactivity.this,<br>      holder.size );<br>    holder.version = pi.versionname == null ? string.valueof( pi.versioncode )<br>      : pi.versionname;<br>    system.out.println("file="+f+"pkgname="+holder.pkgname +"size"+holder.sizestring+"version"+holder.version  );<br>   }<br>  }
    }<br>    <br>    <br>    arraylist<file> getfiles( file parent, final boolean recursive )<br> {<br>  final arraylist<file> files = new arraylist<file>( );
  filefilter filter = new filefilter( ) {
   public boolean accept( file f )<br>   {<br>    if ( f.isfile( )<br>      &amp;&amp; f.getname( ).tolowercase( ).endswith( ".apk" ) )
    {<br>     files.add( f );<br>    }<br>    else if ( recursive &amp;&amp; f.isdirectory( ) )<br>    {<br>     try<br>     {<br>      // try skip links<br>      if ( f.getabsolutepath( )<br>        .equals( f.getcanonicalpath( ) ) )<br>      {<br>       f.listfiles( this );<br>      }<br>     }<br>     catch ( exception e )<br>     {<br>      log.e( mainactivity.class.getname( ),<br>        e.getlocalizedmessage( ),<br>        e );<br>     }<br>    }<br>    return false;<br>   }<br>  };
  parent.listfiles( filter );
  return files;<br> }<br>    <br>    <br>    /**<br>  * apkinfo<br>  */<br> private static final class apkinfo<br> {
  file file;<br>  charsequence label;<br>  string pkgname;<br>  string version;<br>  string sizestring;<br>  long size;<br>  drawable icon;<br>  int installed;<br>  boolean checked;
  apkinfo( )<br>  {
  }<br> }<br>}
 

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
WEB前端 iis7站长之家
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3