小编Ron*_*nie的帖子

PhoneStateListener内存泄漏 - android

运行很多次我的应用程序后,我遇到内存问题.

java.lang.OutOfMemoryError:位图大小超过VM预算

我想我以某种方式泄漏了内存所以我做了一个DUMP HPROF文件并使用MAT工具找出错误.事实证明,在运行5次app并退出之后,我找到了5个Activity的实例和5个PhoneStateListener实例.

如果我删除对PhoneStateListener的调用,我不再有这个问题,我只看到我的Activity的一个实例.

问题是,我该如何解决这个问题?

谢谢

丹尼尔


这是我的代码:

OnCreate方法:

telephonyManager.listen(mPhoneListener,
                PhoneStateListener.LISTEN_SERVICE_STATE
                | PhoneStateListener.LISTEN_SIGNAL_STRENGTH
                | PhoneStateListener.LISTEN_CALL_STATE
                | PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
                | PhoneStateListener.LISTEN_DATA_ACTIVITY); 
Run Code Online (Sandbox Code Playgroud)

在Activity类上:

PhoneStateListener mPhoneListener = new PhoneStateListener() {
        public void onCallStateChanged(int state,
                java.lang.String incomingNumber) {
        //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

on onDestroy方法:

telephonyManager.listen(mPhoneListener, PhoneStateListener.LISTEN_NONE);        
mPhoneListener = null;
Run Code Online (Sandbox Code Playgroud)

memory android phone-state-listener

1
推荐指数
2
解决办法
3160
查看次数

如何在android中获得2次的区别

我想找出当前系统时间与插入数据和时间之间的差异String.我试过这个:

 try {

            String strFileDate = "2012-04-19 15:15:00";
            DateFormat formatter2 = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
            Date date = formatter2.parse(strFileDate);
            long difference = date.getTime() - System.currentTimeMillis();
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(difference);
            Toast.makeText(getBaseContext(),
                    formatter2.format(calendar.getTime()), Toast.LENGTH_LONG)
                    .show();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
Run Code Online (Sandbox Code Playgroud)

但它没有给我正确的结果.我做得对吗?

更新

我试着跟着::

String strFileDate = "2012-04-19 15:15:00";
            DateFormat formatter2 = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
            Date date = formatter2.parse(strFileDate);
            long diffInMs = date.getTime()
                    - new Date(System.currentTimeMillis()).getTime();

            long diffInSec = TimeUnit.MILLISECONDS.toSeconds(diffInMs);

            long hour = diffInSec …
Run Code Online (Sandbox Code Playgroud)

java android calendar

1
推荐指数
1
解决办法
5947
查看次数

缩放图像视图以底部中心为枢轴点

目前,我使用以下XML文件来动画ImageView:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" 

android:interpolator="@android:anim/anticipate_overshoot_interpolator">
       <scale
        android:fromXScale="0.5"
        android:fromYScale="0.5"
        android:toXScale="1.0"
        android:toYScale="1.0"
        android:pivotX="1.0"
        android:pivotY="1.5"

        android:duration="500"></scale>
</set>
Run Code Online (Sandbox Code Playgroud)

但是比例从左上角开始.我想在底部中心开始比例.我玩了一些它的价值,但我仍然无法实现它.

android

1
推荐指数
1
解决办法
6397
查看次数

Magento - 发送不同订单状态的电子邮件

我目前正在使用magento建立一个在线商店.

下订单后,客户会自动收到"订单确认".但是,我想首先检查是否可以处理此订单(由于多种原因),然后发送"订单接受"电子邮件,说明我们已接受订单开始处理它.

我不相信magento缺乏这个功能.

但是我还需要发送其他几封电子邮件:

  • 收到付款时
  • 当需要订购更多的产品时
  • 当我们收到客户的产品otderd ..

有没有人有任何线索,这样的事情是如何完成的?

提前致谢!

magento

0
推荐指数
1
解决办法
1万
查看次数

如何调整从URL解码的位图?

我使用位图从URL获取图像

public void loadImage(String url){
try {

       bitmap = BitmapFactory.decodeStream((InputStream)new URL(url).getContent());

    } catch (MalformedURLException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }

}
Run Code Online (Sandbox Code Playgroud)

无论如何我可以从这里调整图像大小吗?设置它的宽度和高度仍然保持分辨率?

android resize bitmap

0
推荐指数
2
解决办法
8027
查看次数

Android应用程序可以在Nexus S上写入数据,但不能在"/ sdcard/filename"路径上的samsung S2上写入数据吗?

  1. 我已经给予了所需的许可: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  2. 将路径硬编码为"/sdcard/filename".

我猜Nexus没有外部SD支持但S2有,我认为这可能会导致路径出现问题.我该如何优雅地处理这样的案件?

android android-sdcard

0
推荐指数
1
解决办法
249
查看次数

字符串比较w/if语句

我试图将EditText字段中的字符串与共享首选项中的字符串进行比较.如果字符串匹配,则启动新活动.Sharedpreferenced中的字符串使用Base64编码.我试图将编辑文本字符串与sharedpreferences字符串进行比较后解码但无法正确编码.我怎样才能正确编码.例子表示赞赏.我的比较器在第77和78行

 44. public void onClick(View arg0) {
 45.    
 46.   sp=this.getSharedPreferences("AccessApp", MODE_WORLD_READABLE);
 47.  
 48.   
 49.   
 50.   
 51.   byte[] key = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 };
 52.   
 53.   
 54.   try {
 55.    user = sp.getString("USERNAME_KEY", null);
 56.        String decryptedUser = decrypt(user, key);  
 57.        
 58.         
 59.   }
 60.  catch (Exception e) {
 61.   // TODO Auto-generated catch block
 62.   e.printStackTrace();
 63.  }   
 64.  try {
 65.       pass = sp.getString("PASSWORD_KEY", null); …
Run Code Online (Sandbox Code Playgroud)

java authentication base64 android login

0
推荐指数
1
解决办法
418
查看次数