为什么真实赛车2卸载后放在android 卸载应用/data里的数据包也会跟着消失?不止一...

简介教程评论
真实赛车2由起点下载免费提供。真实赛车2Real Racing 2就如同手握方向盘驾驶真正的赛车一样,提供了超过10个小时的个人职业生涯模式,除此以外还有丰富的多人模式, 这意味着对第一名的角逐永远不会结束。
真实赛车2Real Racing 2就如同手握方向盘驾驶真正的赛车一样,提供了超过10个小时的个人职业生涯模式,除此以外还有丰富的多人模式, 这意味着对第一名的角逐永远不会结束。【基本介绍】- 可以通过互联网进行随机配对的16人比赛;- 30种正式授权的汽车,包括2010福特野马GT500,2010日产GT-R(R35),2012迈凯轮MP4-12C。- 可以在15个美丽的地方进行比赛,40英里完美的赛道,包括傍晚和夜晚的比赛。- 按照您的个人喜好来选择操作方式.用您的直觉来赢得关卡旗,可以进入轻松易懂的直观操作模式,也可以将所有的驾驶辅助功能关闭来追求更刺激的驾驶体验。准备好比赛了么,启动你的引擎,体验一下真实的赛车速度!
赛车竞速12.5M免费软件
赛车竞速1.20G免费软件
赛车竞速50.9M免费软件
赛车竞速77M免费软件
赛车竞速23M免费软件GT赛车2实车体验1.0.2含数据包真实赛车体验
GT赛车2实车体验1.0.2含数据包真实赛车体验
11:06:20&&&来源:anzowcom&&&作者:huihui 点击:0
&&&&分享到:
数据包+APK安装包下载进入:【游戏安装方法】压缩包里面的文件GT_Racing_2_The_Real_Car_Exp_v1_02.apk&是安装程序数据包存放路径:数据包安装位置:安装APK之后,将数据包解压缩并传输至SD卡,数据包确认路径为:Android\obb\com.gameloft.android.ANMP.GloftRAHM然后打开游戏即可!数据包大小:980MB注意事项:已去除许可验证,游戏需要谷歌市场和谷歌服务框架,并且登陆和同步Gmail账号,未安装的玩家建议使用谷歌安装器。进入游戏时需要联网,之后可断网正常游戏。谷歌安装器下载进入:《GT赛车2:实车体验(GT&Racing&2:&The&Real&Car&Exp)》是以世界上极富盛名的跑车为特点的一场逼真赛车旅程!最畅销游戏系列回来了,而且免费。不管是单人或多人竞赛,都会提供给玩家前所未有的驾驶乐趣。【游戏特点】领先群雄:可能是目前最强的掌上模拟赛车游戏
软件下载和使用方法进入:&
WP7 Notification可高仿WP7的告诉方法的软件,以状....
Android手机手势查找应用Gesture Search,用户只....
《开关小部件 SwitchPro Widget》一个小型,精巧的体....
手机上最佳的完好网络阅读器。援助分页阅读..双指缩放等更多功用。
....
一款基于多个地震信息源的综合地震信息服务应用,方便您第一时间获知世....
The Cleaner是一款整理优化软件,能够剖析和整理app的缓....
《神斧命运 Axe and Fate》是一款角色扮演游戏,6个角色....
《侧边栏增强版 Sidebar Plus》一款侧边栏中的快捷应用启....
无广告,还能够以高分辨率图像保留。====
你能够用该应用程序的....
《K客》是专为喜欢K歌的伴侣们开发的一款K歌使用,该使用采用了艳丽....
资讯总排行
最新推荐资讯
商务合作:QQ:
电子邮箱:
①干净免费手机应用下载
②手机问题刷机救砖服务QQ:Android卸载程序之后跳转到指定的反馈页面
今天去面试,一面还可以,到了第二面的时候也差不多吧,最后来了一题,说那个360被卸载之后会跳转到指定的反馈页面,是怎么弄的?这个之前没有研究过,但是这个效果是见过的。当时想到了,中卸载应用的时候会发送一个广播,我们可以接收到这个广播,然后处理一下。结果他来个反问句:这样可以吗?然后仔细想想,既然他这么问了,应该是有问题,在想想,发现的确是有问题,当应用被卸载了,那个接收到广播处理之后的逻辑代码放在那里执行?好吧,然后就没戏了~~回来了,就百度了一下,果然网上似乎有相关的问题的解答,这里就将他们的步骤在细化一下了:其实这个问题的核心就在于:应用被卸载了,如果能够做到后续的代码逻辑继续执行我们再来仔细分析一下场景和流程一个应用被用户卸载肯定是有理由的,而开发者却未必能得知这一重要的理由,毕竟用户很少会主动反馈建议,多半就是用得不爽就卸,如果能在被卸载后获取到用户的一些反馈,那对开发者进一步改进应用是非常有利的。目前据我所知,国内的Android应用中实现这一功能的只有360手机卫士、360平板卫士,那么如何实现这一功能的?我们可以把实现卸载反馈的问题转化为监听自己是否被卸载,只有得知自己被卸载,才可以设计相应的反馈处理流程。以下的列表是我在研究这一问题的思路:1、注册BroadcastReceiver,监听"android.intent.action.PACKAGE_REMOVED"广播结果:NO。未写代码,直接分析,卸载的第一步就是退出当前应用的主进程,而此广播是在已经卸载完成后才发出的,此时主进程都没有了,去哪onReceive()呢?2、若能收到"将要卸载XX包"的系统广播,在主进程被退出之前就抢先进行反馈处理就好了,可惜没有这样的系统广播,不过经过调研,倒是发现了一个办法,读取系统log,当日志中包含"android.intent.action.DELETE"和自己的包名时,意味着自己将要被卸载。结果:NO。调试时发现此方法有两个缺陷,(1)点击设置中的卸载按钮即发出此Intent,此时用户尚未在弹框中确认卸载;(2)pm命令卸载不出发此Intent,意味着被诸如手机安全管家,豌豆荚等软件卸载时,无法提前得知卸载意图。3、由于时间点不容易把控,所以干脆不依赖系统广播或log,考虑到卸载过程会删除"/data/data/包名"目录,我们可以用线程直接轮询这个目录是否存在,以此为依据判断自己是否被卸载。结果:NO。同方法1,主进程退出,相应的线程必定退出,线程还没等到判断目录是否存在就已经被销毁了。4、改用C端进程轮询"/data/data/包名"目录是否存在结果:YES。借助端进程fork出来的C端进程在应用被卸载后不会被销毁。解决的方案确定了,下面来看一下代码吧:/*
* Copyright (C) 2009 The Android Open Source Project
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
#include "com_example_uninstalldemos_NativeClass.h"
/* 宏定义begin */
#define MEM_ZERO(pDest, destSize) memset(pDest, 0, destSize)
#define LOG_TAG "onEvent"
//LOG宏定义
#define LOGD(fmt, args...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, fmt, ##args)
JNIEXPORT jstring JNICALL Java_com_example_uninstalldemos_NativeClass_init(JNIEnv* env, jobject thiz) {
//初始化log
LOGD("init start...");
//fork子进程,以执行轮询任务
pid_t pid = fork();
if (pid < 0) {
LOGD("fork failed...");
} else if (pid == 0) {
//子进程注册"/data/data/pym.test.uninstalledobserver"目录监听器
int fileDescriptor = inotify_init();
if (fileDescriptor < 0) {
LOGD("inotify_init failed...");
int watchD
watchDescriptor = inotify_add_watch(fileDescriptor,"/data/data/com.example.uninstalldemos", IN_DELETE);
LOGD("watchDescriptor=%d",watchDescriptor);
if (watchDescriptor NewStringUTF(env, "Hello from JNI !");
这里面主要是用到了中的inotify,这个相关的内容可以自行百度一下~~这里有一个很重要的知识,也是解决这个问题的关键所在,就是Linux中父进程死了,但是子进程不会死,而是被init进程领养。所以当我们应用(进程)卸载了,但是我们fork的子进程并不会销毁,所以我们上述的逻辑代码就可以放到这里来做了。(学习了)Android应用程序代码:MyActivity.javapackage com.example.
import android.app.A
import android.content.I
import android.os.B
import android.util.L
public class MyActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(this, SDCardListenSer.class);
startService(intent);
NativeClass nativeObj = new NativeClass();
nativeObj.init();
Log.d("onEvent", "load jni lib");
System.loadLibrary("hello-jni");
}SDCardListenSer.javapackage com.example.
import android.annotation.SuppressL
import android.app.S
import android.content.C
import android.content.I
import android.net.U
import android.os.E
import android.os.FileO
import android.os.IB
import android.util.L
import java.io.F
import java.io.IOE
public class SDCardListenSer extends Service {
SDCardListener[]
@SuppressLint("SdCardPath")
public void onCreate() {
SDCardListener[] listenners = {
new SDCardListener("/data/data/com.example.uninstalldemos", this),
new SDCardListener(Environment.getExternalStorageDirectory() + File.separator + "1.txt", this) };
this.listenners =
Log.i("onEvent", "=========onCreate============");
for (SDCardListener listener : listenners) {
listener.startWatching();
File file = new File(Environment.getExternalStorageDirectory() + File.separator + "1.txt");
Log.i("onEvent", "dddddddddddddddddddddd nCreate============");
if (file.exists())
file.delete();
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
public void onDestroy() {
for (SDCardListener listener : listenners) {
listener.stopWatching();
public IBinder onBind(Intent intent) {
class SDCardListener extends FileObserver {
private String mP
private final Context mC
public SDCardListener(String parentpath, Context ctx) {
super(parentpath);
this.mPath =
this.mContext =
public void onEvent(int event, String path) {
int action = event & FileObserver.ALL_EVENTS;
switch (action) {
case FileObserver.DELETE:
Log.i("onEvent", "delete path: " + mPath + File.separator + path);
//openBrowser();
case FileObserver.MODIFY:
Log.i("onEvent", "更改目录" + mPath + File.separator + path);
case FileObserver.CREATE:
Log.i("onEvent", "创建文件" + mPath + File.separator + path);
protected void openBrowser() {
Uri uri = Uri.parse("");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
mContext.startActivity(intent);
public void exeShell(String cmd) {
Runtime.getRuntime().exec(cmd);
} catch (Throwable t) {
t.printStackTrace();
}开启一个服务,在这个服务中我们可以看到,用到了一个很重要的一个类FileObserver,也是用来监听文件的变更的,这个和上面的inotify功能差不多。关于这个类的具体用法和介绍,可以自行百度呀~~运行:我们将应用安装之后,打开log进行检测日志:adb logcat -s onEvent当我们从设置中卸载应用的时候,会弹出如下界面:注:这里我特定说了是从设置界面中去卸载应用,因为当我使用小米手机自带的那种快捷卸载应用的时候并不会跳转。这个具体的原因还有待解决(当然360的这个问题也没有解决掉。。)总结:我写这篇文章的目的以及我从这个过程中唯一学习到的一个知识点就是当父进程消亡了,子进程并不会消亡,所以我们可以记住这个知识点,以后遇到像应用被卸载之后的一些逻辑操作都可以采用这种方式去解决。真实赛车3完美版 5.4.0
投诉建议:
千万流量共享 百度高权重排名
软件大小: 64.74MB
软件厂商:
ELECTRONIC ARTS
软件语言: 简体中文
软件授权: 免费
软件评级:
更新时间:
真实赛车3完美版5.4.0应用截图
真实赛车3安卓版为移动平台赛车游戏树立了新的标杆——只有玩过,才会相信!创新特性包括官方授权赛道、扩大的22车位赛道,以及超过50辆描绘细致的赛车,来自Porsche、Lamborghini、Dodge、Bugatti和Audi等厂商。此外在真实赛车3下载手机版中,与好友比赛也借助高级的延时多人游戏技术(TSM)上升到了新的维度,可以在智能手机和平板电脑上与任何玩家随时随地进行比赛!本站提供真实赛车3安卓版下载。真实赛车3游戏需约1.53G数据包,下载地址:真实赛车拥有《真实赛车》史上最大的赛车行列,别错过我们全新的赛车,来自Porsche、Lamborghini、Dodge、Bugatti和Audi。驾驭超过50辆细节丰富的赛车,在真实的22车位赛道上测试您的车技——移动平台上的首创。真实赛道《真实赛车》系列的另一个第一次:在多种配置下,在全球顶尖地点的完整真实赛道上竞速,包括Mazda Raceway Laguna Seca、Circuit de Spa-Francorchamps、Silverstone、Hockenheimring等等。真实车手前所未有,我们创新的延时多人游戏让您随时与任何人竞速——即使他们并不在线! 每个职业生涯赛事都充满完全互动、电脑控制的车手,这些车手是您的Facebook好友及全球玩家的延时版本。更多选择在杯赛、淘汰赛、耐力挑战赛、直道赛等1000多项赛事中比拼。 升级您的赛车零件,最大化性能。 通过不同镜头角度感受极速,微调操作来更适合您的个人喜好。豪华赛车体验由全新的优异MintTM 3引擎驱动,《真实赛车3》拥有持续的车辆损伤、完全可用的后视镜和动态反射,这些都增强着赛车的超级真实性。 享受一款细节丰富的次世代游戏,还有最先进的跨平台社交及竞速社区。 尽在《真实赛车3》欢迎来感受权威的赛车体验,无论您来自哪里,无论您是谁。
真实赛车3完美版 5.4.0 更新内容
*应用权限:
允许应用程序写入外部存储,如SD卡上写文件
允许应用程序读取扩展存储器
允许应用程序请求从AccountManager验证
允许应用程序管理AccountManager中的账户列表
允许应用程序获取网络信息状态
允许应用程序访问Wi-Fi网络状态信息
允许应用程序访问网络连接
允许应用程序开机自动运行
允许应用程序在手机锁屏后进程仍然运行
128MB|0.0KB|159MB|162MB|0.0KB|201MB|
现在很多小伙伴都买了配置很高的安卓手机,有如此强大的硬件,自然不能浪费!玩一些可以压榨硬件性能的手游,自然是最适合不过的了。那么什么手游最能榨干手机的硬件性能?今天笔者...共收集款软件 速度与激情是电影里面最为炫酷的一个飞车电影系列,手机里面作为飞车典范狂野系列每次有新作必定也会引起大家的热议。飞车游戏除了给玩家提供惊险刺激的飞车动作之外,在画面效果上...共收集款软件 赛车小游戏,主要属于体育小游戏,赛车游戏在规定的时间内进行比赛,这种游戏追求的是速度。它又可分为漂移赛、方程式赛、轿车赛、运动汽车赛、GT耐力赛、短道拉力赛、场地越野赛...共收集款软件 为什么大家都这么的爱赛车游戏?1.有豪车。2.不用遵守交通规则。3体验赛车的极速感...当然更多游戏乐趣还是得自己去发掘,下载游戏你就知道了。温馨提示:现实驾驶务必注意...共收集款软件
今日更新推荐
同类软件下载排行
热门关键词

我要回帖

更多关于 android 静默卸载 的文章

 

随机推荐