蜻蜓FM刷活跃度实现原理
2015-11-07 17:40
585 查看
最近比较火的蜻蜓FM事件大家应该都有听说,下面我们一起来分析他的实现原理:
1.Android平台如何实现同时启动多个服务;
给每个服务添加一个process字段就解决了
2.如何将自己的服务永驻于操作系统而不被关闭
Android APP提高进程服务优先级
http://blog.csdn.net/qq_25804863/article/details/48697699
3.如何不定时的启动某个服务
只要接收到广播,就可以实现我们想要的操作
4.如何使用友盟SDK模拟用户活跃
1.Android平台如何实现同时启动多个服务;
<span style="font-size:24px;"> <service android:name="com.tomorrow_p.multiservice.MyService1" android:process=":MultiService1" ></span>
给每个服务添加一个process字段就解决了
2.如何将自己的服务永驻于操作系统而不被关闭
Android APP提高进程服务优先级
http://blog.csdn.net/qq_25804863/article/details/48697699
<span style="font-size:24px;"><span style="font-size:18px;">package com.tomorrow_p.multiservice; import android.app.Service; import android.content.Intent; import android.os.IBinder; public class MyService1 extends Service { @Override public IBinder onBind(Intent arg0) { return null; } @Override public void onDestroy() { // 只要服务被销毁就又启动 startService(new Intent(this, MyService1.class)); super.onDestroy(); } } </span></span>
3.如何不定时的启动某个服务
<span style="font-size:24px;"><span style="font-size:18px;"> <receiver android:name="com.tomorrow_p.multiservice.MyReceiver" > <intent-filter> <!-- 监听充电的广播 --> <action android:name="android.intent.action.ACTION_POWER_CONNECTED" /> </intent-filter> </receiver></span></span>
只要接收到广播,就可以实现我们想要的操作
4.如何使用友盟SDK模拟用户活跃
<span style="font-size:24px;">package com.tomorrow_p.multiservice; import android.app.Service; import android.content.Intent; import android.os.IBinder; public class MyService1 extends Service { private boolean flag = true; @Override public IBinder onBind(Intent arg0) { return null; } @Override public void onCreate() { super.onCreate(); flag = true; new Thread() { @Override public void run() { super.run(); while (flag) { try { sleep(10000); Intent intent = new Intent(MyService1.this, TempActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } catch (InterruptedException e) { e.printStackTrace(); } } }; }.start(); } @Override public void onDestroy() { // 只要服务被销毁就又启动 flag = false; startService(new Intent(this, MyService1.class)); super.onDestroy(); } } </span>
<span style="font-size:24px;">package com.tomorrow_p.multiservice; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; public class TempActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.temp_activity); new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... params) { try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); finish(); } }.execute(); } @Override protected void onResume() { super.onResume(); // 执行 友盟统计api System.out.println("---"); } @Override protected void onPause() { super.onPause(); // 执行 友盟统计api } }</span>
相关文章推荐
- Android源码分析-全面理解Context (转)
- 大道至简第六章读后感
- 4-图
- android自动更新时间时区机制
- Android 获取屏幕尺寸与密度
- Up Stairs
- 从编程到工程
- Android 高清加载巨图方案 拒绝压缩图片
- hdu5120
- Java设计模式_观察者模式&事件处理机制
- cJSON库(构建json与解析json字符串)-c语言
- 水纹特效vc++源码
- Android提高第四篇之Activity+Intent
- 实战解析Android架构设计原则
- nginx (1)
- Numpy、SciPy、MatPlotLib在Python2.7.9下的安装与配置
- Android屏幕录制源码Demo下载
- Java登录到新浪微博抓取数据
- Android开发笔记 - 示例代码
- CKeditor的几种配置方式