当前位置:首页 » 安卓系统 » android对象

android对象

发布时间: 2023-04-08 16:45:49

㈠ Android SharedPreferences对象的获取

Android中主要提供了三种方法用于获取SharedPreferences对象

getSharedPreferences()方法接收两个参数,第一个参数为创建的文件名称SharedPreferences文件存放在/data/棚凳data/<packagename>/share_preds目录下。第二个参数为指定的操作模式,目前只能选择MODE_PRIVATE这一种模式,MODE_PRIVATE为默认模式,和直接传入0的效果是相同的,表示只有当前的应用程序才能对这个SharedPreferences文件进行读写(可参考Context的枚举属性)。

该方法和Context类中的getSharedPreferences()方锋帆法相似,不过它只接收操作模式一个参数,因为使用该方法时系统会自动把当前活动的类名作为SharedPreferences的文件名。

getDefaultSharePreferences()方法为静链基旅态方法,它接收一个Context参数,并自动使用当前应用程序包名作为前缀来命名SharedPreferences文件。

㈡ 23、Android设计模式---(对象共享、避免创建多对象)享元模式

又称 FlyWeight,代表轻量级的意思,结构型设计模式。
享元模式是对象池的一种实现。类似于线程池,线程池可以避免不停的创建和销毁多个对象,消耗睁如性能。享元模式也是为了减少内存的使用,避免出现大量重复的创建销毁对象的场景。

享元模式用在一批相同或相似的对象上,这些对象有可以共享的内部状态和各自不同的外部状态。
享元模式仔辩中会有一个工厂,工厂维护着一个容器,容器以键值对的方式存储,键是对象的内部状态,也就是共享的部分,值就是对象本身。客户端从这个工厂获取对象,如果容器中存在这个对象就直接返回,不存在再创建新的对象并存入容器,避免了大量重复创建对象。

使用共享对象有效的支持大量的细粒度对象的复用。

系统中存在大量的 相似对象。
细粒度的对象都具备较接近的外部状态,且内部状态与环境无关,即对象没有特定身份。
需要 缓冲池 的场景。

例1. 过年回家买火车票,无数人在客户端上订票 (有多次购票、刷票的情况),即不断向服务念早缺端发送请求。
而每次查询,服务器必须做出回应,具体地,用户查询输入出发地和目的地,查询结构返回值只有一趟列车的车票。而数以万计的人有同样需求,即不间断请求数据,每次重新创建一个查询的车票结果,即造成大量重复对象创建、销毁,使得服务器压力加重。
享元模式正好适合解决该情形的问题,例如 A 到 B 地的车辆是有限的,车上铺位分硬卧、软卧和坐票三种,将这些可公用的对象缓存起来。用户查询时优先使用缓存,反之则重新创建。

我们知道 java 中 String 是存在于常量池中,即一个 String 被定义之后它就被缓存到了常量池中,当其他地方使用同样的字符串,则直接使用缓存,而非创建。

享元模式的优缺点
优点 - 大幅度地降低内存中对象的数量。
缺点-1) 为了使对象可共享,需将一些状态外部化,使程序的逻辑复杂化

㈢ 在android系统中,那些被监听对象有哪些

在android系统中,那些被监听对象有哪些:1、单击事件(View.OnClickListener):当用户触碰到某个组件或者方向键被按下时产生该事件,该事件的处理方法是onClick()。

2、焦点事件(View.OnFocusChangeListener):组件得到或者失去焦点时产生该事件,事件处理方法是onFocusChange()。

3、按键事件(View.OnKey Listener):用户按下或者释放设备上的某个按键时产生,事件处理方法是 onKey()。

4、触碰事件(View.OnTouchListener):设备具有触摸屏功能时,触碰屏幕产生该事件。事件处理方法是onTouch()。

5、创建上下文菜单事件(View.OnCreateContextMenu Listener):创建上下文菜单时产生该事件,事件处理方法是 onCreateContextMenu()。

㈣ 自己关于Android上下文对象的理解

  Android中有个我们熟悉又陌生的对象Context(上下文),当我们启动Activity的时候需要上下文,当我们使用dialog的时候我们需要上下文,但是上下文对象到底是个什么东西呢?

  在Android api当中是这样描述context对象的。

"Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc."

“是一个用于实现关于应用环境的整体信息的一个接口。这是一个由安卓系统提供的抽象类并且系统有对他进行实现。它允许访问到应用特殊的资源和类,同时它也可以实现到应用级别的操作,例如:Activity的启动,广播的实现和接受intent等。”

一、Context的主要实现和继续理解

  知道了context的大概描述,我们可以再继续理解Context这个神秘的对象了,首先,作为基类,肯定有其它类去实现它,主要实现了context类的类是Activity,Service,Application。他们三个类虽然都是Context的子类,但是具体的继承关系却有些不大一样:

Activity的继承关系:

Service和Application的继承关系:

  可以看出我们的Context其实就是我们熟知的Activity,Service,Application。

  在这3个类中,Activity的context对象和Application的context对象最容易弄混淆。

二、Context中的主要方法

  知道了Context的大概描述和他的一些继承关系,我们对Context这个类有了一个大致的了解。现在可以看看在context中的一些方法,来加深对context的一个理解,有很多我们使用过的方法其实都是从Context这个类中实现而来。

  我们从Android api中查看Context类,这里出现了一个非常熟悉的方法:startActivity,可以看到其实Activity中的StartActivity方法是重写了Context中的方法。

abstract void startActivity ( Intent intent)

Same as startActivity(Intent, Bundle) with no options specified.

abstract void startActivity ( Intent intent, Bundle options)

Launch a new activity.

同时context还可以访问到资源文件,获得资源文件中的信息。

abstract Resources getResources ()

Return a Resources instance for your application's package.

abstract SharedPreferences getSharedPreferences ( String name, int mode)

Retrieve and hold the contents of the preferences file 'name', returning a SharedPreferences through which you can retrieve and modify its values.

final String getString (int resId)

Return a localized string from the application's package's default string table.

final String getString (int resId, Object... formatArgs)

Return a localized formatted string from the application's package's default string table, substituting the format arguments as defined in Formatter and format(String, Object...) .

同时context不但可以开启一个activity,同时还可以开启或者关闭一个Service。

abstract ComponentName startService ( Intent service)

Request that a given application service be started.

abstract boolean stopService ( Intent service)

Request that a given application service be stopped.

  访问Android Api 或者查看源码可以看到,Context中还有很多访问资源文件和程序之间互相通信的方法。

  可以看出context其实就是一个应用之中的手脚,可以通过他来拿取资源文件中的资源,还可以通过他来处理Activity和Service中的一些操作,这个类就是整个程序的枢纽,负责管理整个程序的通畅运行。

  我们可以通过分析一个Toast通知的源码去分析context的去向和使用,来了解context到底做了些神马操作:

public static Toast makeText(Context context, CharSequence text, int ration) {

   Toast result = new Toast(context);

   LayoutInflater inflate = (LayoutInflater)

   context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

   View v = inflate.inflate(com.android.internal.R.layout.transient_notification, null);

   TextView tv = (TextView)v.findViewById(com.android.internal.R.id.message);

   tv.setText(text);

   result.mNextView = v;

   result.mDuration = ration;

   return result;

}

可以看到makeText方法接受的context被用于

context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View v = inflate.inflate(com.android.internal.R.layout.transient_notification, null);

  这是用于获取XML中定义的View的方法,可以看到通过外部传入的Context,在这里获得了一个View布局用于显示Toast。

public Toast(Context context) {

   mContext = context;

   mTN = new TN();

   mTN.mY = context.getResources().getDimensionPixelSize(

   com.android.internal.R.dimen.toast_y_offset);

   mTN.mGravity = context.getResources().getInteger(

   com.android.internal.R.integer.config_toastDefaultGravity);

}

  这一行中可以看出在context又被用来获取资源文件,可以看出Toast的显示和布局都是通过context去调用系统写好的资源文件来进行实现的。

三、Activity context和Application context的区别

  Activity的context和Application的context的区别在于生命周期的区别,Activity的context是依附在着Activity的生命周期的,而Application的Context的生命周期是依附在整个应用之上的。

㈤ android 上下文对象对象是什么意思

你说的是Context吧,它代表的是某个类的团辩引用,比如
public class B{
private Context mContext;
public B(Context context){
mContext = context;
.......................
}
}
如果在class A中新建了塌腊缺一个class B的对局竖象,B b = new B(A.this);那么B的构造方法中的context参数就是A的引用,在android中如果A是Activity那么B中的mContext经过赋值后就可以像使用Activity一样使用mContext,比如mContext.startActivity(..........);
((Activity)mContext).finish();等等

㈥ 在android 中 什么对象主要用于发送消息和处理消息

Android消息机制中,Handler对象主要用于发送消息,不能够处理消息.

㈦ android怎么创建url对象

在 Android 应用程序中,要创建 URL 对象可以使用 java.net.URL 类。
以下是创建 URL 对象的基本语法:
URL url = new URL("http://www.example.com");

上述代码可以将字符串 URL 转换为 URL 对象。可以在括号内提供 URL 字符串。
可芦模以在字符串中包括协议类型(http://或 https:/型孙/)、主机名(例如www.example.com)、端口号或路径等等。例如:
URL url = new URL("https://www.example.com:443/login");

上述代码会在创建 URL 对象时指定协议类型为 HTTPS,主机名为www.example.com,端口号为443,路径为login。
如果 URL 字符串不是有效的 URL,则会抛出MalformedURLException 异常。可以使用 try-catch 块捕获异常,例如:
try {
URL url = new URL("http://invalid_URL");
} catch (MalformedURLException e) {
e.printStackTrace();
}

此外,还陪租缓可以使用其他构造函数和方法生成更复杂的 URL 对象,例如添加请求参数等等。需要根据具体情况进行调整。
希望这些信息对您有所帮助!

㈧ Android Intent传递对象为什么要序列化,序列化有那几种方式

        我们都知道进行android 开发的时候,跳转到Activity和Fragment的时候,传递对象是通过Intent或者bundle 进行传递。当这个对象没有实现序列化的时候 当你通过Inetnt传递的时候会报红,系统会提示你将这个对象实现序列化。

      1.先了解一下 什么是序列化。通过对《Android 开发艺术探索》可以知道序列化是将一个对象转化成可存储可传输的状态,序列化后的对象可以在网络上传输,也可以存储到本地。

       2.回到我们的主题,那为什么要序列化呢?<大致有三个原因>

               a.永久性保存对象,保存对象的字节序列到本地文件中

               b.对象可以在网络中传输

               c.对象可以在IPC之间传递

    3.序列化有那几种方式呢<有两种方式> 

      android自定义对象可序列化有两个选择一个是Serializable和Parcelable

     4.它们之间有什么区别?

             a.在使用内存的时候Parcelable比Serializable的性能高。

             b.Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC(内存回收)。

             c.Parcelable不能使用在将对象存储在磁盘上这种情况,因为在外界的变化下Parcelable不能很好的保证数据的持续性。

            d.实现Serializable很简单 因为Serializable是一个空接口 所以只要在在实体类中实现这个接口即可 Parcelable就稍微复杂了一点了 

            这里有实现Parcelable 这个接口的列子  blog.csdn.net/jaycee110905/article/details/21517853  

热点内容
sqlserver2005命令 发布:2025-07-04 06:27:08 浏览:730
压缩文件啥样 发布:2025-07-04 06:21:42 浏览:297
linux的回车换行 发布:2025-07-04 06:21:39 浏览:131
c语言的窗口 发布:2025-07-04 06:20:54 浏览:982
androidk线图 发布:2025-07-04 06:19:15 浏览:129
华为荣耀6短信加密 发布:2025-07-04 06:18:30 浏览:814
sqlserver2008链接 发布:2025-07-04 06:15:54 浏览:906
ueditor的图片上传 发布:2025-07-04 06:09:09 浏览:539
iis7匿名访问 发布:2025-07-04 05:53:33 浏览:319
ftp服务器被动模式配置 发布:2025-07-04 05:17:32 浏览:334