- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我使用 Volley 库在 Singleton 类的帮助下下载了一张图片。
问题:
如果我使用单吨类,我可以在一段时间内成功下载图像,而且我注意到图像也可以在不使用单吨类的情况下成功下载。
请问有人能告诉我在我的代码中加入单例类有什么好处吗?
--------------------代码单例类 -------------- -----
MainActivity.java
public class MainActivity extends AppCompatActivity {
Button response_click;
TextView text_response;
RequestQueue requestQueue;
String server_url="http://i.imgur.com/7spzG.png";
ImageView imageView;
ImageRequest imageRequest;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
response_click=(Button) findViewById(R.id.click_response);
text_response=(TextView) findViewById(R.id.text_response);
imageView=(ImageView) findViewById(R.id.image_download);
}//onCreate Ending
public void response_click(View view){
final ImageRequest imageRequest=new ImageRequest(server_url, new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
imageView.setImageBitmap(response);
}
}, 0, 0, null, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),"You Got an Error....",Toast.LENGTH_LONG).show();
}
});
MySingleTon.getInstance(MainActivity.this).addToRequestQue(imageRequest);
}//Button Click Ending
}//Main Activity Ending
MySingleTon.java
public class MySingleTon {
private static MySingleTon mySingleTon;
private RequestQueue requestQueue;
private static Context mctx;
private MySingleTon(Context context){
this.mctx=context;
this.requestQueue=getRequestQueue();
}
public RequestQueue getRequestQueue(){
if (requestQueue==null){
requestQueue= Volley.newRequestQueue(mctx.getApplicationContext());
}
return requestQueue;
}
public static synchronized MySingleTon getInstance(Context context){
if (mySingleTon==null){
mySingleTon=new MySingleTon(context);
}
return mySingleTon;
}
public<T> void addToRequestQue(Request<T> request){
requestQueue.add(request);
}
}
在这里,我编写了一个代码,用于在不使用 Singleton 类的情况下下载图像。请同时检查此代码。
在这里记住一件事,在没有使用 Singleton 类的情况下,我也没有任何错误地完成了我的工作。
--------------------代码 With Out Singleton class ---------- --------------
MainActivity.java
public class MainActivity extends AppCompatActivity {
Button response_click;
TextView text_response;
RequestQueue requestQueue;
String server_url="http://i.imgur.com/7spzG.png";
ImageView imageView;
ImageRequest imageRequest;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
response_click=(Button) findViewById(R.id.click_response);
text_response=(TextView) findViewById(R.id.text_response);
imageView=(ImageView) findViewById(R.id.image_download);
}//onCreate Ending
public void response_click(View view){
requestQueue=Volley.newRequestQueue(this.getApplicationContext());
final ImageRequest imageRequest=new ImageRequest(server_url, new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
imageView.setImageBitmap(response);
}
}, 0, 0, null, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),"You Got an Error....",Toast.LENGTH_LONG).show();
}
});
requestQueue.add(imageRequest);
}//Button Click Ending
}//Main Activity Ending
最佳答案
如果您的应用程序经常使用网络,那么设置一个 RequestQueue 实例可能最有效,该实例将持续您的应用程序的生命周期。您可以通过多种方式实现这一目标。推荐的方法是实现一个封装 RequestQueue 和其他 Volley 功能的单例类。另一种方法是继承 Application 并在 Application.onCreate() 中设置 RequestQueue。但是不鼓励这种方法;静态单例可以以更加模块化的方式提供相同的功能。
一个关键概念是 RequestQueue 必须使用应用程序上下文而不是 Activity 上下文进行实例化。这确保 RequestQueue 将在您的应用程序的整个生命周期内持续存在,而不是在每次重新创建 Activity 时都重新创建(例如,当用户旋转设备时)。
阅读文档 https://developer.android.com/training/volley/requestqueue.html#singleton
关于android - Volley 中的单例类有什么用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41120064/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!