我正在使用Volley作为我在Android中正在进行的项目中的网络堆栈.我的部分要求是下载可能非常大的文件并将其保存在文件系统中.
我一直在研究凌空的实现,似乎凌空的唯一方法就是将整个文件下载到一个潜在的大量字节数组中,然后将这个字节数组的处理推迟到一些回调处理程序.
由于这些文件可能非常大,我担心下载过程中出现内存不足错误.
有没有办法告诉volley将http输入流中的所有字节直接处理成文件输出流?或者这需要我实现自己的网络对象?
我在网上找不到任何关于此的资料,所以任何建议都将不胜感激.
我有以下代码.
Java的
public void lockScreenOrientation() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
}
public void unlockScreenOrientation() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
Run Code Online (Sandbox Code Playgroud)
我从javascript调用这些函数.控制正在进入这些方法.但是方向未锁定.
我试过跟随锁定方向
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
Run Code Online (Sandbox Code Playgroud)
这些似乎都不起作用.任何指针都会有所帮助.
[编辑:我做了一个最小的项目,试图缩小正在发生的事情.底部的代码在保存时仍会生成相同的工件]
我有一个使用Paths绘制简单2D几何的应用程序.形状都是纯色,有时alpha <255,可以用线条装饰.在绘制几何图形的视图中,从未出现过如何绘制事物的问题.但是,当我使用相同的代码绘制到位图,然后将其保存为JPEG(100质量)或PNG时,输出文件的纯色区域中始终存在相同的伪像.这是一种通常与JPEG压缩相关的斑点.
我尝试了以下内容
所有这些都会产生相同的文物,既不会变得更糟也不会更好.
public class MainActivity extends AppCompatActivity {
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.context = getApplicationContext();
}
// button OnClick listener
public void saveImage(View view) {
new saveBitmapToDisk().execute(false);
}
public Bitmap getBitmap() {
final int bitmapHeight = 600, bitmapWidth = 600;
Bitmap bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888);
Canvas bitmapCanvas = new Canvas(bitmap);
float[] triangle = new float[6];
triangle[0] = bitmapWidth / 2;
triangle[1] …Run Code Online (Sandbox Code Playgroud)