当前位置:  编程技术>移动开发
本页文章导读:
    ▪Smack运用Openfire的广播功能        Smack使用Openfire的广播功能 使用openfire的广播功能首先需要在插件的页面里安装broadcast,然后通过Smack就可以发送广播了. Connection connection = new XMPPConnection("localhost"); connection.connect(); connection.logi.........
    ▪ apk往广告        apk去广告 所需要用到的工具有:apktool,JD-GUI,dex2jar,Apk文件签名工具dex2jar下载地址:http://laichao.googlecode.com/files/...7-SNAPSHOT.zipJD-GUI下载地址:windows版JD-GUI:http://laichao.googlecode.com/files/jdgui.zipLi.........
    ▪ Activity的四种加载方式       Activity的四种加载模式 Activity之间的跳转,或者说加载一个新的Activity,一般对于开发者来说,都不是一个太难的问题。直到后来随着不断的深入,才发现原来Activity的加载还分为四种不同加.........

[1]Smack运用Openfire的广播功能
    来源: 互联网  发布时间: 2014-02-18
Smack使用Openfire的广播功能
使用openfire的广播功能首先需要在插件的页面里安装broadcast,然后通过Smack就可以发送广播了.
Connection connection = new XMPPConnection("localhost");
connection.connect();
connection.login("admin", "123");
Message m = new Message("all@broadcast.pc-20110603jqqc");
m.setBody("this is a broadcast.");
connection.sendPacket(m);
 

    
[2] apk往广告
    来源: 互联网  发布时间: 2014-02-18
apk去广告
所需要用到的工具有:apktool,JD-GUI,dex2jar,Apk文件签名工具
dex2jar下载地址:http://laichao.googlecode.com/files/...7-SNAPSHOT.zip
JD-GUI下载地址:
windows版JD-GUI:http://laichao.googlecode.com/files/jdgui.zip
Linux版JD-GUI:http://laichao.googlecode.com/files/...ux.i686.tar.gz
apktool下载地址:
http://code.google.com/p/android-apktool/
Apk文件签名工具下载地址:
自己百度吧
1.先把下载来的新浪微博apk程序,用解压工具(winrar)解压出来,解压出来的目录下有个classes.dex文件,用dex2jar把它反编译成jar。

2.用JD-GUI打开这个jar文件,找com.sina.weibo\HomeListActivity,打开直接看代码了。。。(找去广告的关键地方,自己根据情况搜索关键字,比如:AdView)
很容易就在protected void onCreate(Bundle paramBundle)函数里面看到,在初始化广告窗口的代码:

    IntentFilter localIntentFilter3 = new IntentFilter();
    localIntentFilter3.addAction("com.sina.weibo.action.AdCenter.show");
    BroadcastReceiver localBroadcastReceiver3 = this.mAdReceiver;
    Intent localIntent3 = registerReceiver(localBroadcastReceiver3, localIntentFilter3);
    initAdView();

initAdView:
  private void initAdView()
  {
    Animation localAnimation1 = AnimationUtils.loadAnimation(this, 2130968576);
    this.mAdInAnimation = localAnimation1;
    Animation localAnimation2 = AnimationUtils.loadAnimation(this, 2130968577);
    this.mAdOutAnimation = localAnimation2;
    ImageView localImageView1 = (ImageView)findViewById(2131624038);
    this.mAdBar1 = localImageView1;
    ImageView localImageView2 = (ImageView)findViewById(2131624039);
    this.mAdClose1 = localImageView2;
    ImageView localImageView3 = (ImageView)findViewById(2131624040);
    this.mAdBar2 = localImageView3;
    ImageView localImageView4 = (ImageView)findViewById(2131624041);
    this.mAdClose2 = localImageView4;
    HomeListActivity.14 local14 = new HomeListActivity.14(this);
    HomeListActivity.15 local15 = new HomeListActivity.15(this);
    this.mAdBar1.setOnClickListener(local14);
    this.mAdClose1.setOnClickListener(local15);
    this.mAdBar2.setOnClickListener(local14);
    this.mAdClose2.setOnClickListener(local15);
  }
所以去广告,很简单,只要把onCreate那五行代码给NOP掉就OK了,不过,就这样五行代码nop掉,广告是去了,但退出时,微博客户端还是会崩溃。原因是onCreate注册了一个广播接收但被NOP掉了,但在在销毁窗口的时候,在这个 protected void onDestroy()函数里面有移除这个广播接收,所以就造成崩溃了。所以onDestroy函数下面这两句代码也要nop!

BroadcastReceiver localBroadcastReceiver2 = this.mAdReceiver;
unregisterReceiver(localBroadcastReceiver2);

3.使用apktool把整个新浪微博的apk程序给反编译出来,在反编译出来的程序目录下,找smali\com\sina\weibo\HomeListActivity.smali这个文件,直接记事本打开。搜“com.sina.weibo.action.AdCenter.show”定位到onCreate函数,把下面这几行给删除掉。

    .line 329
    new-instance v1, Landroid/content/IntentFilter;
    invoke-direct {v1}, Landroid/content/IntentFilter;-><init>()V

    .line 330
    .local v1, myAdIntentFilter:Landroid/content/IntentFilter;
    const-string v3, "com.sina.weibo.action.AdCenter.show"
    invoke-virtual {v1, v3}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V

    .line 331
    iget-object v3, p0, Lcom/sina/weibo/HomeListActivity;->mAdReceiver:Landroid/content/BroadcastReceiver;
    invoke-virtual {p0, v3, v1}, Lcom/sina/weibo/HomeListActivity;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;

    .line 334
    invoke-direct {p0}, Lcom/sina/weibo/HomeListActivity;->initAdView()V

再搜索下"protected onDestroy()"定位到onDestroy函数里,把这几行也给删除掉!
    .line 808
    iget-object v0, p0, Lcom/sina/weibo/HomeListActivity;->mAdReceiver:Landroid/content/BroadcastReceiver;
    invoke-virtual {p0, v0}, Lcom/sina/weibo/HomeListActivity;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V

4,最后还要去删除掉的ADCenter服务!不然这个服务会一直在后台运行着,看着某地方都会疼!打开在新浪微博的apk程序反编译出来的程序目录下的AndroidManifest.xml文件。删除掉下面这几行,就可以去掉AdCenter服务。

        <service android:name=".business.AdCenter">
            <intent-filter>
                <action android:name="com.sina.weibo.action.speed" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </service>

5,用apktool把那个修改去广告后的新浪微博反编译的程序目录编译成apk文件。最后在打上签名,去广告版就完成了
去广告版传送门:http://www.52pojie.cn/forum.php?mod=viewthread&tid=104819

    
[3] Activity的四种加载方式
    来源: 互联网  发布时间: 2014-02-18
Activity的四种加载模式

Activity之间的跳转,或者说加载一个新的Activity,一般对于开发者来说,都不是一个太难的问题。直到后来随着不断的深入,才发现原来Activity的加载还分为四种不同加载模式,让我突然有了一种别有洞天的感觉。灵活的使用合适的加载模式,可以避免产生大量的重复的Activity,从而优化性能,减少系统资源消耗。

  四种加载模式具体为:

  • standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。
  • singleTop: 检查是否已经存在了一个实例位于Activity Stack的顶部,如果存在就不产生新的实例,反之则调用Activity的newInstance()方法产生一个新实例。
  • singleTask: 在一个新的Task中产生这个实例,以后每次调用都会使用此实例,而避免产生新的实例。
  • singleInstance: 这个基本上跟singleTask一样,只是有一点不同,那就是在这个模式下的Activity实例所处的Task中,只能有这一个Activity实例,而不能有其他的实例。

  这些启动模式可以Android清单文件AndroidManifest.xml中,通过<activity>中的launchMode属性进行设置,如:

<activity android:name="MainActivity" android:launchMode="singleTop">
    <intent-filter>
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

 

另外也可以在代码中通过一些标志进行设置。如:

 

Intent intent = new Intent(SrcActivity.this, TargetActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent); 

 

四种加载模式的区别如下:
   一、  所属Task的区别:一般情况下,“standard”和”singleTop”两种加载模式源Activity(即new Intent(arg0,arg1)中的第一个参数)和目标Activity(即new Intent(arg0,arg1)中的第二个参数)在同一个Task内,除非Intent包括了参数FLAG_ACTIVITY_NEW_TASK,如包含了此参数,目标Activity会起动到新的Task里;“singleTask”和“singleInstance” 总是把目标Activity作为一个Task的根元素,他们不会被启动到一个其他Task里。
 二、 是否允许多个实例的区别:
   standard”和”singleTop”可以允许有多个实例,并且可以位于不同的Task中;
   singleTop要求如果Activity Stack顶部已经有目标Activity实例,则直接讲Intent发送给该实例,而不创建新实例。如Activity Stack没有该实例,则创建新实例;
   “singleTask”和”singleInstance”则只产生一个实例,并且是Task的根元素。“standard”和”singleTop”可以被实例化多次,并且是可以存在于不同的task中;这种实例化时一个task可以包括一个activity的多个实例;“singleTask”和”singleInstance”则限制只生成一个实例,并且是task的根元素。
 三、 是否允许其他Activity存在于本Task内的区别:
   “singleInstance”独占一个Task,其他Activity均不能存在于此Task中,如果它启动一个新的Activity,不管新的Activity的launch mode如何,新的Activity都将运行于其他Task里;      
   另外三种模式则可以和其他Activity共存。
 四、 是否每次都生成新实例的区别:
   “standar”模式每次都生成一个新的Activity实例;
   “singleTop”的Activity如果在Task的Activity Stack顶部则不生成新实例,直接使用此实例,否则生成一个新实例。
   “singleeInstance”是其所在Task的Activity Stack里的唯一Activity实例,它每次都会被重用。
   “singleTask”如果在Task的Activity Stack的顶部,则接收intent,否则该intent会被丢弃,但仍然会该Task返回前台。
转自:http://www.cnblogs.com/wisekingokok/archive/2011/08/21/2147879.html

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪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