本人就在平时开发中经常用到的知识点以及代码片段总结出来供大家分享。
1:手机自动重启
调用如下方法即可实现手机自动重启
public void onReboot() { Intent reboot = new Intent(Intent.ACTION_REBOOT); reboot.putExtra("nowait", 1); reboot.putExtra("interval", 1); reboot.putExtra("window", 0); sendBroadcast(reboot); }
最后要在文件清单里面加上系统权限 android:sharedUserId="android.uid.system"
<uses-permission android:name="android.permission.REBOOT" />
2:每30分钟执行一次服务
AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(context, MyService.class); PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0); long interval = DateUtils.MINUTE_IN_MILLIS * 30; long firstWake = System.currentTimeMillis() + interval; am.setRepeating(AlarmManager.RTC,firstWake, interval, pendingIntent);3: Activity界面切换添加动画特效
//实现淡入淡出的效果 overridePendingTransition(Android.R.anim.fade_in,android.R.anim.fade_out); overridePendingTransition(Android.R.anim.fade_in,android.R.anim.fade_out); //由左向右滑入的效果 overridePendingTransition(Android.R.anim.slide_in_left,android.R.anim.slide_out_right); overridePendingTransition(Android.R.anim.slide_in_left,android.R.anim.slide_out_right); //实现zoomin和zoomout,即类似iphone的进入和退出时的效果 overridePendingTransition(R.anim.zoomin, R.anim.zoomout); overridePendingTransition(R.anim.zoomin, R.anim.zoomout);4:BroadcastReceiver用于监听被广播的事件
广播必须被注册,而且有两种方法:
(1、在应用程序的代码中注册即动态注册
注册BroadcastReceiver:
registerReceiver(receiver,filter);
取消注册BroadcastReceiver:
unregisterReceiver(receiver);
当BroadcastReceiver更新UI,通常会用这样的方法注册,启动Activity时候注册BroadcastReceiver,Activity不可见时候取消注 册。
(2、在androidmanifest.xml当中注册即静态注册
<receiver>
<intent-filter>
<action android:name = "android.intent.action.PICK"/>
</intent-filter>
</receiver>
使用这样的方法注册弊端:它会始终处于活动状态,毕竟是手机开发,cpu和电源资源比较少,一直处于活动耗费大,不利。
5:Activity中finish()和onDestroy()的区别
finish()方法用于结束一个Activity的生命周期,而onDestory()方法则是Activity的一个生命周期方法,其作用是在一个Activity对象被销毁之前,Android系统会调用该方法,用于释放此Activity之前所占用的资源。finish会调用到onDestroy方法,可以在onDestroy里打印一句话,就会发现在finish方法那也会打印这句话。finish函数仅仅把当前Activity退出了,但是并没有释放他的资源。
6:Android 手动显示和隐藏软键盘
(1、方法一(如果输入法在窗口上已经显示,则隐藏,反之则显示)
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
(2、方法二(view为接受软键盘输入的视图,SHOW_FORCED表示强制显示)
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(view,InputMethodManager.SHOW_FORCED);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);//强制隐藏键盘
(3、调用隐藏系统默认的输入法
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(WidgetSearchActivity.this.getCurrentFocus().getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);(WidgetSearchActivity是当前的Activity)
(4、获取输入法打开的状态
InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
boolean isOpen=imm.isActive();//isOpen若返回true,则表示输入法打开