不定期更新,无废话开始:List<Integer>不是List<Number>的子类,但List<Integer>是Collection<Integer>的子类。
- 一个List<? extends Number>的对象引用可以被赋值任何以Number或其子类为泛型的List或其子类的对象实例引用,如下例
1 List<? extends Number> nums = new ArrayList<Integer>();
- 泛型方法可以显示指定其返回结果的泛型类型,如下例
1 Arrays.<Object>asList(1, 1.2, "Hello");
2 Collections.<Number>copy(objs, ints);
- Get与Put原则:当仅从结构中取出值则使用extends通配符,当仅向结构中添加值则使用super通配符,当对一个结构即取出又添加值时不要使用任何通配符。
1 //Collections.copy方法即使用super又使用extends的例子
2 public static <T> void copy(List<? super T> dest, List<? extends T> src)
1 //另一个例子,对同一个结构即取值又设值,不使用任何通配符
2 public static double sum(Collection<? extends Number> nums) {
3 double s = 0.0;
4 for (Number num : nums) s += num.doubleValue();
5 return s;
6 }
7
8 public static void count(Collection<? super Integer> ints, int n) {
9 for (int i = 0; i < n; i++) ints.add(i);
10 }
11
12 //注意这个方法参数的签名,没有使用任何通配符
13 public static double sumCount(Collection<Number> nums, int n) {
14 count(nums, n);
15 return sum(nums);
16 }
启动应用
onCreate
onStart
onResume
按退出键
onPause
onStop
onDestory
按HOME键或当前应用被其他全屏应用覆盖时(如电话呼入)
onPause
onStop
按HOME键后,再次点击应用图标或长按HOME键点击任务列表中的应用图标或覆盖当前应用的其他全屏应用退出后
onRestart
onStart
onResume
被弹出对话框覆盖时(如弹出短信提醒对话框)或屏幕关闭时
onPause
对话框关闭时或屏幕点亮时
onResume
横竖屏切换时
onPause
onStop
onDestory
onCreate
onStart
onResume
ImageView中有setImageURI,但是传递一个URI.parse("http://www.google.com.hk/tools/dlpage/res/chrome/images/chrome-205_noshadow.png")这样的URL路径不能成功载入网络上的图片,最终还是需要借助java.net.URL,如下代码所示:
1 URL picUrl = new URL("http://www.google.com.hk/tools/dlpage/res/chrome/images/chrome-205_noshadow.png");
2
3 Bitmap pngBM = BitmapFactory.decodeStream(picUrl.openStream());
4
5 imageView.setImageBitmap(pngBM);
很简单吧,哪位朋友如果有更简单的方法请通知我。
懒得再翻译,这段应该很好理解,直接将Dev Guide中复制过来。
The SharedPreferences
class provides a general framework that allows you to save and retrieve persistent key-value pairs of primitive data types. You can use SharedPreferences
to save any primitive data: booleans, floats, ints, longs, and strings. This data will persist across user sessions (even if your application is killed).
To get a SharedPreferences
object for your application, use one of two methods:
getSharedPreferences()
- Use this if you need multiple preferences files identified by name, which you specify with the first parameter.
getPreferences()
- Use this if you need only one preferences file for your Activity. Because this will be the only preferences file for your Activity, you don't supply a name.
To write values:
- Call
edit()
to get a SharedPreferences.Editor
.
- Add values with methods such as
putBoolean()
and putString()
.
- Commit the new values with
commit()
To read values, use SharedPreferences
methods such as getBoolean()
and getString()
.
Here is an example that saves a preference for silent keypress mode in a calculator:
1public class Calc extends Activity {
2 public static final String PREFS_NAME = "MyPrefsFile";
3
4 @Override
5 protected void onCreate(Bundle state){
6 super.onCreate(state);
7 . . .
8
9 // Restore preferences
10 SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
11 boolean silent = settings.getBoolean("silentMode", false);
12 setSilent(silent);
13 }
14
15 @Override
16 protected void onStop(){
17 super.onStop();
18
19 // We need an Editor object to make preference changes.
20 // All objects are from android.context.Context
21 SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
22 SharedPreferences.Editor editor = settings.edit();
23 editor.putBoolean("silentMode", mSilentMode);
24
25 // Commit the edits!
26 editor.commit();
27 }
28}
首先内部存储路径为/data/data/youPackageName/,下面讲解的各路径都是基于你自己的应用的内部存储路径下。所有内部存储中保存的文件在用户卸载应用的时候会被删除。
一、 files
1. Context.getFilesDir(),该方法返回/data/data/youPackageName/files的File对象。
2. Context.openFileInput()与Context.openFileOutput(),只能读取和写入files下的文件,返回的是FileInputStream和FileOutputStream对象。
3. Context.fileList(),返回files下所有的文件名,返回的是String[]对象。
4. Context.deleteFile(String),删除files下指定名称的文件。
二、cache
1. Context.getCacheDir(),该方法返回/data/data/youPackageName/cache的File对象。
三、custom dir
getDir(String name, int mode),返回/data/data/youPackageName/下的指定名称的文件夹File对象,如果该文件夹不存在则用指定名称创建一个新的文件夹。