智能手机内存空间不足问题的解决办法

 更新时间:2016年9月20日 19:59  点击:2102
智能手机像电脑一样可以安装大量的应用软件与游戏,这样因为手机空间没有电脑空间大并且智能手机也会产生缓存,这样久了缓存不清除手机就越用越慢了,下面我们来看看常用解决智能手机内存空间不足的方法。

空间不足怎么办

1.系统提示内存空间不足了之后,卸载程序也不会增加多少可用空间,仍然会提示系统内存不足,亲测通过格式化手机可以解决,也就是恢复出厂设置(恢复出厂设置会把所有应用都卸载回到最初界面)。当然这个方法也会让你安装的APP都丢失,如果没必要刷机就再看看下面的。

2.打开RE文件浏览器,将/data/dalvik-cache 这个文件夹里面的都是系统缓存文件和卸载定制程序留下来的无用垃圾,可以放心全部删除,系统所需文件重启后能自动生成的,删除后可以感觉到系统内存明显提升,RAM内存释放,重启期间等待时间一到两分钟,期间不要有任何操作。小编实测有效,不过发现锁屏变成默认的

3.我们需要用到RE管理器进行删除(需要root权限)。

1、打开RE管理器(第一次打开RE管理器时,系统会弹出窗口询问你是否允许re管理器获取root权限,点击允许即可)

2、打开RE管理器后,点击右上角”挂载读写“的按钮;

3、进入data/app文件夹,找到该目录下的后缀为odex的文件,删除即可!

4、删除之后,再次安装就不会再出现“存储空间不足”了!不信你试试!

安卓教程:使用RE管理器解决“存储空间不足” - 解决安装特定应用出现的“存储空间不足”问题-7

安卓教程:使用RE管理器解决“存储空间不足” - 解决安装特定应用出现的“存储空间不足”问题-5

4.移动APP到SD卡,这个方法有一定的局限性,当效果不错,部分手机不支持者这样的功能

5.使用容量较小的主题包,由于使用的主题都是要求放置在机身内存中的,所以使用小容量的主题包也能很有效的减少内存占用。

内存不足怎么办

1、系统提示内存不足解决办法一,可以删除一些不用的程序但这样空间不会有多大的提升,我们可以恢复出厂设置也就是大家讲的格机了:

2、在手机中安装RE文件器,然后进入你手机的/data/dalvik-cache 这里面是你手机应用程序所产生的临时文件与缓存文件了,清除这里不要的文件可解决此问题。

3、把一些不要的系统文件删除,但是删除后第一次重启机器会比较慢,大概2分钟才可启动

智能手机与电脑类似,在使用一段时间,安装了大量的运用软件并存储了大量的资料之后,系统速度可能会变得缓慢,再加上一些恶意软件的存在,这些都有可能对系统的稳定性造成影响。另外,在您遇到了一些疑难杂症的时候,恢复出厂设置就是您最好的,也是最常用的解决方法之一了
安卓2.0系统操作步骤
提示:恢复出厂设置会清空手机内置的数据,所以请您提前备份好个人资料。
1.在“主界面”点击下方“应用程序菜单”进入“应用程序列表”如图1-1;
图1-1
2. 在“应用程序列表”找到并点击“系统设置”,如图1-2所示;
图1-2
3. 进入“系统设置”菜单后,点击“隐私权”,然后点击“恢复出厂设置”,如图1-3到1-4所示;
图1-3
图1-4
4.点击“重置手机”即可。如图1-5所示。(建议不要勾选格式化SD卡选项,否则将清除存储卡上的全部资料)
图1-5
安卓4.0系统操作步骤
提示:恢复出厂设置会清空手机内置的数据,所以请您提前备份好个人资料。
1. 在“主界面”点击“系统设置”,如图2-1所示;
图2-1
2. 选择“全部设置”,如图2-2所示;
图2-2
3. 找到并点击“备份与重置”,如图2-3所示;
图2-3
4. 点击“恢复出厂设置”,如图2-4所示;
图2-4
5. 如有重要资料需勾选“重置前备份数据”,点击“重置手机”,如图2-5所示。
图2-5

 

afinal框架是一个android的 orm 和 ioc 框架。而且封装了android中的httpClient,使其更加简单易用。 afinal是android应用开发的终极框架.

afinal是一个开源的android的orm和ioc应用开发框架,其特点是小巧灵活,代码入侵量少。
在android应用开发中,通过afinal的ioc框架,诸如ui绑定,事件绑定,通过注解可以自动绑定。通过afinal的orm框架,无需任何配置信息,一行代码就可以对android的sqlite数据库进行增删改查操作。同时,afinal内嵌了finalHttp等简单易用的工具,可以轻松的对http请求进行操作。

Afinal里面目前包含了四大组件:


FinalHttp:用于请求http数据,直接ajax方式请求,文件上传, 断点续传下载文件等
FinalBitmap:用于显示bitmap图片,而无需考虑线程并发和oom等问题。
FinalActivity:完全可以通过注解方式绑定控件和事件,无需编写代码。
FinalDb:android中sqlite的orm框架,一行代码搞定增删改查。

小结

无论是学习哪个框架,入手一般的顺序都是如下:

1、学习该框架,会用。

2、精通如何使用该框架(基于框架抛出来的接口设计自己优秀的应用)

3、阅读框架代码,自己画uml图

4、尝试自己写一些小框架。

5、自己写的框架和你认为优秀的框架对比。

在安卓应用开发中碰到1. 4.0 或以上版本的 Android 不能在主线程中联网与 自定义 touch 创建左右划动检测两个问题,下面我找到解决办法了下面大家一起来看看。

继续整理一下做 Android 开发过程中遇到的一些问题和技巧。

1. 4.0 或以上版本的 Android 不能在主线程中联网
Android 应用程序运行在一个 dalvik 虚拟机进程中,当这个进程开始的时候会启动一个主线程( MainThread ),在 Android 4.0 或以上的版本中,强制禁止在主线程执行耗时的网络操作,若需要进行网络操作,则需要另外开辟线程或使用 AsyncTask ,下面介绍的是另外开辟线程的方法。

 代码如下 复制代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.single);
 
    new Thread(postLoad).start();
 
}
     
Runnable postLoad = new Runnable(){
           
    @Override
    public void run() {  
        // TODO Auto-generated method stub  
        // 在这里执行联网操作
    }
};

但是,联网操作后一般都需要根据联网所得数据更新 UI ,这时又会产生一个新问题,主线程负责处理和 UI 相关的操作,因此主线程又被称为 UI 线程。而 Android 采用 UI 单线程模型,只能在主线程中对 UI 元素进行操作,在非 UI 线程直接对 UI 进行了操作,则会报错。

为了解决这个问题,则需要利用 Android 的消息循环的机制实现线程间的通信。即在非 UI 线程发送消息到 UI 线程,让 UI 线程来进行 UI 的操作。例如,可以利用 View 的 post 方法告知 UI 线程执行操作更新 UI 。

 代码如下 复制代码

Runnable postLoad = new Runnable(){
           
    @Override
    public void run() {  
        // TODO Auto-generated method stub
        // 联网获取数据 data
        TextView textShow = (TextView) findViewById(R.id.show);
        textShow.post(new Runnable() {
               
            @Override
            public void run() { // 该方法会在 ui 线程执行 
                textShow.setText(data);
            }
        });
    }
};

2. 检测是否有网络

 代码如下 复制代码

final ConnectivityManager mConnectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
// 检查网络连接,如果无网络可用,就不需要进行连网操作等 
NetworkInfo info = mConnectivity.getActiveNetworkInfo();    
if (info != null ) { // 若有网络
    // 判断网络连接类型
    int netType = info.getType(); 
    int netSubtype = info.getSubtype(); 
 
    if (netType == ConnectivityManager.TYPE_WIFI) { 
        // 若为 WIFI
    } else if (netType == ConnectivityManager.TYPE_MOBILE && netSubtype == TelephonyManager.NETWORK_TYPE_UMTS ) { 
        // 若为 3G
    } else { 
        // 其他网络
    }
} else { // 若无网络
 
}

3. 自定义 touch 创建左右划动检测

     

 代码如下 复制代码
// 定义手势速度记录器
private VelocityTracker velocityTracker;
// 定义手势动作两点之间的距离要求
private static final int VELOCITYX = 900;
private static final int VELOCITYY = 800;
 
WebView postContent = (WebView) findViewById(R.id.postContent);
 
postContent.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View arg0, MotionEvent arg1) {
         // TODO Auto-generated method stub
             
        switch(arg1.getAction()){
        case MotionEvent.ACTION_DOWN:
            if(velocityTracker == null){
                // 取得手势在屏幕上的滑动速度
            velocityTracker = VelocityTracker.obtain();
            velocityTracker.addMovement(arg1);
        }
        break;
    case MotionEvent.ACTION_MOVE:
        if(velocityTracker != null){
            velocityTracker.addMovement(arg1);
        }
        break;
        case MotionEvent.ACTION_CANCEL:
        case MotionEvent.ACTION_OUTSIDE:
            break;
        case MotionEvent.ACTION_UP:
 
        int velocityX = 0, velocityY = 0;
 
        if(velocityTracker != null){
            velocityTracker.addMovement(arg1);
            velocityTracker.computeCurrentVelocity(1000); // 计算每秒滑动多少个像素
            velocityX = (int) velocityTracker.getXVelocity(); // 最后计算检索 X 速度
            velocityY = (int) velocityTracker.getYVelocity(); // 最后计算检索 Y 速度
        }
 
            // 从右向左划
        if( velocityX < -VELOCITYX && velocityY < VELOCITYY && velocityY > -VELOCITYY ){
                // 执行相应操作
                return true;
            } else if( velocityX > VELOCITYX && velocityY < VELOCITYY && velocityY > -VELOCITYY ) { // 从左向右划
                // 执行相应操作
                return true;
            } else {
                // 判断若不是划动操作,则返回 false 使用 WebView 自身的 touch 处理
                return false;
            }
                 
        }
        return false;
    }
});

在检测过程中发现触摸操作不完整(例如划动距离太少,或者误触屏幕),或是直接判断出不是划动操作,必须返回 false ,使到组件自身的 touch 处理得以保留。

下面我整理了自己在android开发时碰到的一些小问题,包括有Missing contentDescription attribute on image in XML与Buttons in button bars should be borderless问题。

最近在做 Android 开发,刚刚入门,遇到不少问题,累积了做重构时的习惯,遇到问题,好好解决,好好总结,于是整理如下:

一. Eclipse Error
1.'Missing contentDescription attribute on image' in XML
原因:缺少图片描述,在 ADT 16 开始会抛出这个警告,确保开发者为图片添加内容描述。

解决方法:为图片添加 android:contentDescription="@string/desc" 属性。

2. Buttons in button bars should be borderless
原因:两个 Buttons 放在一个布局里会被判断为按钮栏,需要添加样式取消它的边框。

解决方法: 在 Buttons 上添加属性 style="?android:attr/buttonBarButtonStyle" 。系统提示也可以在按钮的父布局上添加 style="? android:attr/buttonBarStyle" 属性,但是我在线性布局上测试了一下无效,求高手指导!

二. 开发技巧
1. 在新打开的 Activity 中触发前一个 Activity 作出调整
例如:原页面相应的 class 为 Main.class (主要代码)

 代码如下 复制代码

public class Main extends Activity {
 
    Button page;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        page = (Button) findViewById(R.id.open);
 
        page.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View source) {
                Intent intent = new Intent(Main.this, NewPage.class);
 
                // 启动 intent 对应的 Activity ,并且等待其返回结果,其中 0 是标识码
                startActivityForResult(intent, 0);
            }
        });
     
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent intent){
         
        if( requestCode == 0 && resultCode == 0 ){ // 确认请求标识码和反馈结果标识码同为 0
            // 改变本页面或其他操作
        }
    }
 
}

public class NewPage extends Activity {
 
    Button cancel;
 
    Intent intent;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.newpage);
         
        // 获取到上一个页面传过来的 Intent
        intent = this.getIntent();
 
        cancel = (Button) findViewById(R.id.confirm);
        cancel.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View source) {
                // 反馈结果,将 intent 传回上一个 Activity ,这时在上一页触发 onActivityResult 方法,重写该方法可以对原页面作出调整
                NewPage.this.setResult(0, intent);
                NewPage.this.finish();
            }
        });
 
    }
 
}

如果需要在 Activity 之间传输数据,还可以使用 Bunble 在 intent 中保存和获取数据。

2. 获取列表中被点击事项的位置
扩展 BaseAdapter 类,重写 getView 方法,第一个方法即为事项的位置,若要配合 cursor 使用,则可以使用 cursor.moveToPosition(position) 把 cursor 移动到事项在数据库中相应的数据行。

[!--infotagslink--]

相关文章

  • PHP session_start()很慢问题分析与解决办法

    本文章来给各位同学介绍一下关于PHP session_start()很慢问题分析与解决办法,希望碰到此问题的同学可进入参考。 最近在做东西的时候发现一个问题 有一个接口挂...2016-11-25
  • php中json_decode()和json_encode()用法与中文不显示解决办法

    本文章介绍了关于php中json_decode()和json_encode()用法与中文不显示解决办法,有需要的朋友可以参考一下下。 php中json_decode()和json_encode() 1.json_decode(...2016-11-25
  • phpexcel导出数据身份证后四位0000解决办法

    在php中我们如果要导入excel数据我们通常会使用phpexcel插件了,但是有朋友会发与使用phpexcel导出数据出现身份证后四位是0000情况了,下面我们就来看解决办法。 最...2016-11-25
  • 401错误码代表什么 401错误解决办法

    401是HTTP状态码的一种,属于“请示错误”,表示请求可能出错,已妨碍了服务器对请求的处理。具体的401错误是指:未授权,请求要求进行身份验证。登录后,服务器可能会返回对页面...2017-01-22
  • apache网站提示503错误解决办法

    Apache status 503 的原因大致有如下几种情况 : 1、 CPU 负载过高,服务器响应不过来,返回503 2、 系统连接数超限,超过MaxVhostClients的上限,返回503 3、 单IP连接数超限,超过M...2016-01-28
  • Perl CPAN::Modulelist的解决办法

    今天用CPAN安装Term::ReadLine,报了个这样的错误 Going to read /root/.cpan/sources/modules/03modlist.data.gz Can't locate object method "data" via package "C...2016-11-25
  • phpStudy访问速度慢和启动失败的解决办法

    下面给大家介绍phpstudy访问速度慢的解决办法。1、修改mysql数据库链接地址为ip地址127.0.0.1。2、使用最新版本,这个坑了我好久时间。下面一段内容是关于phpstudy启动失败的解决办法。php5.3、5.4和apache都是用vc9编...2015-11-24
  • PHP Curl出现403错误的解决办法

    自己用的小PHP应用,使用curl抓网页下来处理,为了穿墙方便,使用Privoxy作为代理,便于选择哪些网站使用proxy、哪些不用。但今天却遇到了奇怪的问题,访问google baidu这些网站居然都返回403错误,而访问其他的一些网站没事,如果...2014-05-31
  • 浅谈redis key值内存消耗以及性能影响

    这篇文章主要介绍了浅谈redis key值内存消耗以及性能影响,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-07
  • 详解分析MySQL8.0的内存消耗

    这篇文章主要介绍了详解分析MySQL8.0的内存消耗,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下...2021-03-23
  • PHP判断上传文件类型的解决办法

    分享给大家php判断上传文件类型的方法,大家一起学习学习。/** * 读取文件前几个字节 判断文件类型 * @return String */ function checkTitle($filename){ $file=fopen($filename, "rb"); $bin=fread($file, 2); /...2015-10-21
  • android.os.BinderProxy cannot be cast to com解决办法

    本文章来给大家介绍关于android.os.BinderProxy cannot be cast to com解决办法,希望此文章对各位有帮助呀。 Android在绑定服务的时候出现java.lang.ClassCastExc...2016-09-20
  • MYSQL数据库使用UTF-8中文编码乱码的解决办法

    1.用phpmyadmin创建数据库和数据表 创建数据库的时候,请将“整理”设置为:“utf8_general_ci” 或执行语句: 复制代码 代码如下:CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 创...2015-10-21
  • 解决使用OpenCV中的imread()内存报错问题

    这篇文章主要介绍了解决使用OpenCV中的imread()内存报错问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法

    最近遇到一个问题,就是在使用php的mail函数发送utf-8编码的中文邮件时标题出现乱码现象,而邮件正文却是正确的。最初以为是页面编码的问题,发现页面编码utf-8没有问题啊,找了半天原因,最后找到了问题所在。 1.使用 PEAR 的...2015-10-21
  • PHP页面转UTF-8中文编码乱码的解决办法

    对于乱码这个问题php开发者几乎都会有碰到过,我们下面主要是介绍了php文件乱码和页面乱码。PHP页面转UTF-8编码问题 1.在代码开始出加入一行: header("Content-Type: text/html;charset=utf-8"); 2.PHP文件编码问题...2015-10-21
  • Android开发之PhoneGap打包及错误解决办法

    下面来给各位简单的介绍一下关于Android开发之PhoneGap打包及错误解决办法,希望碰到此类问题的同学可进入参考一下哦。 在我安装、配置好PhoneGap项目的所有依赖...2016-09-20
  • Ubuntu15下mysql5.6.25不支持中文的解决办法

    apt-get install 安装的,不是源码包安装的mysql1 修改mysql的配置文件/etc/mysql/conf.d/mysql.cnf在[mysql]的下方加入如下语句:(注:这个文件下没有配置,只有【mysql】)no-auto-rehash default-character-set=utf8/etc/...2015-10-21
  • 解决tensorflow训练时内存持续增加并占满的问题

    今天小编就为大家分享一篇解决tensorflow训练时内存持续增加并占满的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-22
  • php mail发邮件标题中文乱码的问题解决办法

    本文章来给大家介绍php mail发邮件标题中文乱码的问题解决办法,希望到此类问题的朋友可进入参考。 当使用下面的PHP语句发送电子邮件的时候,如果编码和接收邮箱编码...2016-11-25