我有一个旋转图像的方法,但我总是收到一个OutMemoryError,但我在相册中的图像是从相机拍摄的,尺寸宽度是5000~手机
我将照片调整为宽度1280和高度960
我的第一个显示和调整图像的方法是
public static Boolean ShowImagesCapture(Context context, Uri PATH_IMAGE, ImageCropView view,int width, int height){
int orientation=0;
Boolean success = true;
try {
Bitmap bitmap =null;
if (Build.VERSION.SDK_INT < 19) {
String selectedImagePath = getPath(PATH_IMAGE,context);
bitmap = BitmapFactory.decodeFile(selectedImagePath);
orientation=GetPhotoOrientation(context,getRealPathFromURI(context,PATH_IMAGE));
}
else {
ParcelFileDescriptor parcelFileDescriptor;
try {
parcelFileDescriptor = context.getContentResolver().openFileDescriptor(PATH_IMAGE, "r");
FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
bitmap = BitmapFactory.decodeFileDescriptor(fileDescriptor);
parcelFileDescriptor.close();
orientation=GetPhotoOrientation(context,getRealPathFromURI(context,PATH_IMAGE));
} catch (Exception e) {
e.printStackTrace();
}
}
switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_180:
bitmap=rotateBitmap(bitmap,3,width,height);
view.setImageBitmap(bitmap);
break;
break;
case ExifInterface.ORIENTATION_ROTATE_90:
bitmap=rotateBitmap(bitmap,8,width,height);
view.setImageBitmap(bitmap); …Run Code Online (Sandbox Code Playgroud) 我的应用程序包含几个片段.到目前为止,我已将它们的引用存储在自定义的Application对象中,但我开始认为我做错了.
当我意识到我的片段对mActivity的所有引用在方向改变后变为null时,我的问题就开始了.因此,当我在方向更改后调用getActivity()时,会抛出NullPointerException.我已经检查过我的片段的onAttach()在调用getActivity()之前被调用,但它仍然返回null.
以下是我的MainActivity的剥离版本,它是我的应用程序中唯一的活动.
public class MainActivity extends BaseActivity implements OnItemClickListener,
OnBackStackChangedListener, OnSlidingMenuActionListener {
private ListView mSlidingMenuListView;
private SlidingMenu mSlidingMenu;
private boolean mMenuFragmentVisible;
private boolean mContentFragmentVisible;
private boolean mQuickAccessFragmentVisible;
private FragmentManager mManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
* Boolean variables indicating which of the 3 fragment slots are visible at a given time
*/
mMenuFragmentVisible = findViewById(R.id.menuFragment) != null;
mContentFragmentVisible = findViewById(R.id.contentFragment) != null;
mQuickAccessFragmentVisible = findViewById(R.id.quickAccessFragment) != null;
if(!savedInstanceState != null) {
if(!mMenuFragmentVisible && mContentFragmentVisible) { …Run Code Online (Sandbox Code Playgroud) 在大多数Android示例代码中,从SQLite数据库填充ListView有两种方式,
预取数据,以列表-执行查询,对于每一行创建模型对象,然后将其添加到列表和关闭的光标,然后填充ListView控件与列表.
没有List和Model对象 -执行查询并按照Cursor使用moveToFirst,moveToLast,move,根据需要填充ListView.
现在我想知道,在Android中,上述哪种方法的内存效率更高?
android android-listview android-cursor android-sqlite android-memory
我正在尝试使用 adb shell 命令查找设备 RAM(512 MB 或 1GB)。
以下命令提供有关可用、已用和总内存的更多详细信息。但是如何找到设备的总体RAM呢?
adb shell "cat /proc/meminfo"
adb shell dumpsys meminfo
adb shell procrank
Run Code Online (Sandbox Code Playgroud) 如何在Android中读取和写入可移动SD卡的文件?
我想将Android Id存储在文本文件中.应在外部SD卡上创建文本文件.
码:
PackageManager m = getPackageManager();
String s = getPackageName();
PackageInfo p = m.getPackageInfo(s, 0);
s = p.applicationInfo.dataDir;
File myFile = new File(s + "/MyDoople.txt");
myFile.createNewFile();
FileOutputStream fOut = new FileOutputStream(myFile);
OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
myOutWriter.append(TxtS.getText());
myOutWriter.close();
fOut.close();
Toast.makeText(getBaseContext(),"Text Updated",Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)
第二是
File sdCard = new File("file:///mnt/external_sd/");
File myFile = new File(sdCard, "test.txt");
FileWriter writer = new FileWriter(myFile);
writer.append(TESTSTRING);
writer.flush();
writer.close();
Run Code Online (Sandbox Code Playgroud) 我有Android应用程序在我的应用程序中使用12个选项卡.每个标签大约有10个viewpager.我的内存有问题,因为如果我打开活动标签,应用程序将创建新的活动实例.当所有标签打开时,速度变慢,我得到了(应用程序无响应)(ANR).
当我打开所有标签时,它会不断发生.我还是不知道如何处理内存.我想处理最近打开的选项卡,但我不知道如何在Android中执行此操作.
有人可以帮我解决这个问题吗?
在我们进入的设备中Manage apps- > running tab然后在底部我们看到使用的内存和可用内存实时改变它们的值.
我们如何将其编码到我的应用程序以显示相同的统计信息?
谢谢
我正在制作一个Android应用程序,可以将视频从服务器流式传输到Android移动设备.我有正确的图像流和工作,但15秒后应用程序崩溃.我设法跟踪到Throwing OutOfMemoryError.我尝试回收位图后,我传递一个接口,将其带到线程显示它,但我收到错误"无法重用再循环的位图".我不知道如何解决这个错误,即使斜倚也会修复它.
int read_count = 1;
long start_time = System.currentTimeMillis();
long timeout = 10000;
boolean timed_out = false;
byte[] data = new byte[size + 1];
while (read_count < size && !timed_out)
{
int len = in.read(data, read_count, size - read_count);
read_count += len;
timed_out = (System.currentTimeMillis() - start_time) >= timeout;
}
data[0] = (byte)0x89;
if (read_count == size)
{
final boolean is_left = (side == 0);
final byte[] tmp = data;
Bitmap Image_data = null;
System.out.println(tmp.length);
if (Listener != null) …Run Code Online (Sandbox Code Playgroud) 我在两个不同的设备中运行我的应用程序,并从 Android Studio 的 Memroy 选项卡检查应用程序分配的内存。当应用程序在三星设备中运行时,分配的内存约为 60 MB。当应用程序在摩托罗拉设备中运行时,分配的内存约为 40 MB。
是什么导致了内存分配的这种差异?
设备:Android 版本 5.0.1 的 Samsung Galaxy S4
摩托罗拉 Moto G2 安卓 5.0.2 版本
我有一个很大的问题,我正在从一个存储在Sdcard中的视频文件中读取2 ^ 21个字节,但是当我们在ByteArrayOutputStream中写入相同内容时,它会抛出一个Exception as Out of Memory,我不知道为什么?请建议我正确的解决方案.
提前致谢.
错误堆栈:
11-03 19:24:23.193: ERROR/AndroidRuntime(28258): FATAL EXCEPTION: main
11-03 19:24:23.193: ERROR/AndroidRuntime(28258): java.lang.OutOfMemoryError
11-03 19:24:23.193: ERROR/AndroidRuntime(28258): at java.io.ByteArrayOutputStream.expand(ByteArrayOutputStream.java:93)
11-03 19:24:23.193: ERROR/AndroidRuntime(28258): at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:218)
11-03 19:24:23.193: ERROR/AndroidRuntime(28258): at com.example.TestCryptoActivity.onCreate(TestCryptoActivity.java:42)
11-03 19:24:23.193: ERROR/AndroidRuntime(28258): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-03 19:24:23.193: ERROR/AndroidRuntime(28258): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-03 19:24:23.193: ERROR/AndroidRuntime(28258): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-03 19:24:23.193: ERROR/AndroidRuntime(28258): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-03 19:24:23.193: ERROR/AndroidRuntime(28258): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-03 19:24:23.193: ERROR/AndroidRuntime(28258): at android.os.Handler.dispatchMessage(Handler.java:99)
11-03 19:24:23.193: ERROR/AndroidRuntime(28258): at android.os.Looper.loop(Looper.java:123)
11-03 19:24:23.193: ERROR/AndroidRuntime(28258): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-03 19:24:23.193: ERROR/AndroidRuntime(28258): at java.lang.reflect.Method.invokeNative(Native Method) …Run Code Online (Sandbox Code Playgroud)