0、Android彻底退出引用程序的方法
1) Dalvik VM的本地方法
android.os.Process.killProcess(android.os.Process.myPid()); // 获取PID System.exit(0); // 常规java的标准退出法,返回值为0代表正常退出
2)任务管理器方法
首先要说明该方法运行在Android 1.5 API Level为3以上才可以,同时需要权限
// 获取ActivityManager实例 ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE); am.restartPackage(getPackageName());系统会将,该包下的 ,所有进程,服务,全部杀掉,就可以杀干净了,要注意加上权限声明:
<!-- 权限声明 --> <uses-permission android:name="android.permission.RESTART_PACKAGES"></uses-permission>
3) 根据Activity的声明周期
我们知道Android的窗口类提供了历史栈,我们可以通过stack的原理来巧妙的实现,这里我们在A窗口打开B窗口时在Intent中直接加入标志 Intent.FLAG_ACTIVITY_CLEAR_TOP,这样开启B时将会清除该进程空间的所有Activity。
在A窗口中使用下面的代码调用B窗口
Intent intent = new Intent(); intent.setClass(Android123.this, CWJ.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //注意本行的FLAG设置 startActivity(intent);
接下来在B窗口中需要退出时直接使用finish方法即可全部退出。
4)自定义一个Activity栈,道理同上,不过利用一个单例模式的Activity栈来管理所有Activity,并添加提供了能够退出所有Activity的方法。代码如下:
public class ScreenManager { private static Stack<Activity> activityStack; private static ScreenManager instance; private ScreenManager() { } public static ScreenManager getScreenManager() { if (instance == null) { instance = new ScreenManager(); } return instance; } // 退出栈顶Activity public void popActivity(Activity activity) { if (activity != null) { activity.finish(); activityStack.remove(activity); activity = null; } } // 获得当前栈顶Activity public Activity currentActivity() { Activity activity = activityStack.lastElement(); return activity; } // 将当前Activity推入栈中 public void pushActivity(Activity activity) { if (activityStack == null) { activityStack = new Stack<Activity>(); } activityStack.add(activity); } // 退出栈中所有Activity public void popAllActivityExceptOne(Class cls) { while (true) { Activity activity = currentActivity(); if (activity == null) { break; } if (activity.getClass().equals(cls)) { break; } popActivity(activity); } }}
引申:按两次返回键退出程序:
//监听返回键,点击两次退出 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { onBackCodePressed(); } return false; } private int mPressedTime = 0; private void onBackCodePressed() { // 表示第一次点击 if(mPressedTime == 0){ Toast.makeText(this, "连续点击退出程序 ", Toast.LENGTH_SHORT).show(); ++mPressedTime; new Thread(){ @Override public void run() { try { sleep(2000); } catch (Exception e) { Log.e(TAG, e.toString()); } finally { mPressedTime = 0; } } }; } else { android.os.Process.killProcess(android.os.Process.myPid()); } }
1、绘制边框
<?xml version="1.0"encoding="utf-8"?><!-- 绘制边框 --><layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:right="0dp"> <shape android:shape="rectangle"> <solid android:color="@color/white"/> </shape> </item> <item android:bottom="1dp" android:left="1dp" android:right="1dp" android:top="1dp"> <shape android:shape="rectangle"> <solid android:color="@color/orchid"/> </shape> </item> </layer-list>
2、在Android中判断字符串是否为null,或者字符串是否为空串,可以直接使用
3、判断横屏竖屏并进行切换:
使用实例:
TextUtils.isEmpty(str);
TextUtils.isEmpty源码:
public static boolean isEmpty(CharSequence str) { if (str == null || str.length() == 0) return true; else return false;}
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){ setContentView(R.layout.横屏);}else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { setContentView(R.layout.竖屏);}
4、替代重复的findViewbyId书写:
public <T> T $(int viewID) { return (T) findViewById(viewID); }
TextView a; a = $(R.id.a_id);
5、获取系统当前时间并格式化
方法一:
SimpleDateFormat formatter = new SimpleDateFormat( "yyyy年MM月dd日 HH:mm:ss"); Date curDate = new Date(System.currentTimeMillis());// 获取当前时间 String str = formatter.format(curDate);
方法二:
String label = DateUtils.formatDateTime( getApplicationContext(), System.currentTimeMillis(), DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL);
6、检查WIFI是否开启、连接:
//是否连接WIFI public static boolean isWifiConnected(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo wifiNetworkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); return wifiNetworkInfo.isConnected(); } /**** 打开WIFI***/ public static boolean openWifi(Context context){ return opclWifi(context, true); } /**** 关闭WIFI***/ public static boolean closeWifi(Context context){ return opclWifi(context, false); } /**** 打开关闭WIFI****/ private static boolean opclWifi(Context context, boolean type){ boolean result = true; // 获取WIFIManager实例 WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); if (wifiManager.isWifiEnabled() ^ type) { // 打开关闭WIFI result = wifiManager.setWifiEnabled(!type); } return result; }
版权声明:本文为博主原创文章,未经博主允许不得转载。