Ⅰ android,想在工具類中顯示對話框,如何獲取主activity的context
在android中context可以作很多操作,但是最主要的功能是載入和訪問資源。在android中有兩種context,一種是
application
context,一種是activity
context,通常我們在各種類和方法間傳遞的是activity
context。
比如一個activity的onCreate:
protected
void
onCreate(Bundle
state)
{
super.onCreate(state);
TextView
label
=
new
TextView(this);
//傳遞context給view
control
label.setText("Leaks
are
bad");
setContentView(label);
}
把activity
context傳遞給view,意味著view擁有一個指向activity的引用,進而引用activity佔有的資源:view
hierachy,
resource等。
這樣如果context發生內存泄露的話,就會泄露很多內存。
這里泄露的意思是gc沒有辦法回收activity的內存。
Leaking
an
entire
activity是很容易的一件事。
當屏幕旋轉的時候,系統會銷毀當前的activity,保存狀態信息,再創建一個新的。
Ⅱ android開發,如何用在其他工程中使用自定義的工具類的問題
在工程2中把工程1添加為依賴工程就可以了!
Ⅲ android studio 自定義工具類放在什麼目錄下
工具類一般放到自己建立的util包裡面,比如你新建工程包名為com.example.,可以在這個下面再new一個pakage,命名為util,所有的工具類都放進去。
Ⅳ android 工具類 app有哪些
import java.util.Stack;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
/**
*
* @ClassName: com.qust.myutils.AppManager
* @Description: Activity管理類:用於管理Activity和退出程序
* @author zhaokaiqiang
* @date 2014-11-20 下午4:53:33
*
*/
public class AppManager {
// Activity棧
private static Stack<Activity> activityStack;
// 單例模式
private static AppManager instance;
private AppManager() {
}
/**
* 單一實例
*/
public static AppManager getAppManager() {
if (instance == null) {
instance = new AppManager();
}
return instance;
}
/**
* 添加Activity到堆棧
*/
public void addActivity(Activity activity) {
if (activityStack == null) {
activityStack = new Stack<Activity>();
}
activityStack.add(activity);
}
/**
* 獲取當前Activity(堆棧中最後一個壓入的)
*/
public Activity currentActivity() {
Activity activity = activityStack.lastElement();
return activity;
}
/**
* 結束當前Activity(堆棧中最後一個壓入的)
*/
public void finishActivity() {
Activity activity = activityStack.lastElement();
finishActivity(activity);
}
/**
* 結束指定的Activity
*/
public void finishActivity(Activity activity) {
if (activity != null) {
activityStack.remove(activity);
activity.finish();
activity = null;
}
}
/**
* 結束指定類名的Activity
*/
public void finishActivity(Class<?> cls) {
for (Activity activity : activityStack) {
if (activity.getClass().equals(cls)) {
finishActivity(activity);
}
}
}
/**
* 結束所有Activity
*/
public void finishAllActivity() {
for (int i = 0; i < activityStack.size(); i++) {
if (null != activityStack.get(i)) {
activityStack.get(i).finish();
}
}
activityStack.clear();
}
/**
* 退出應用程序
*/
public void AppExit(Context context) {
try {
finishAllActivity();
ActivityManager activityMgr = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
activityMgr.killBackgroundProcesses(context.getPackageName());
System.exit(0);
} catch (Exception e) {
}
}
}
Ⅳ android 裡面TextView 解決特殊字元自動換行 並能解析Html數據 求大大們給個工具類吧
我只說我知道的,第一個不清楚,第二個有個工具叫jsoup可以直接解析html代碼;http://www.open-open.com/jsoup這是他的中文API,可以直接下載
Ⅵ android 有沒有比appmanager更好的工具類
這個也是昨天學習的,做下總結。 檢查服務是否開啟要寫成一個工具類,方便使用,傳服務的名字返回Boolean值,當然,因為需要,還要傳一個上下文context。 說一下這個工具類的幾個關鍵點: 1.方法要傳context和serviceName,context用來getSystemService()操作獲得ActivityManager。注意,這個方法參數要用大寫的Context中的參數:Context.ACTIVITY_SERVICE,要不然會出錯,還不知道哪錯的,花了我10分鍾的時間才知道,謹記下。 2.ActivityManager實例可以getRunningService()方法,參數是獲得服務最大數目,一般100就好。 3.上面的方法返回的事一個List,要對他進行遍歷,獲的每一個服務的名字,在比較,返回結果。 下面是具體代碼。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import java.util.List; import android.app.ActivityManager; import android.app.ActivityManager.RunningServiceInfo; import android.app.Service; import android.content.Context; public class ServiceStateUtiles { public static Boolean isServiceRunning(Context context, String serviceName) { //獲取服務方法 參數 必須用大寫的Context!!! ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); Listrunningserviceinfo infos = am.getRunningServices(100); for (RunningServiceInfo info : infos) { String className = info.service.getClassName(); if(serviceName.equals(className)) return true; } return false; } }/runningserviceinfo
Ⅶ android 判斷是不是有網路 方法 工具類里的幾個常用方法
我都是自定義的網路工具類,大概是這樣寫的,希望能夠幫到您:
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;
import android.widget.Toast;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
/**
* 網路工具類
*
* @author shikh
*
*/
public class NetUtils {
public static final int CMNET = 20;
public static final int CMWAP = 21;
public static final int WIFI = 22;
/**
* 獲得網路類型:3G /WIFI
*/
public static int getAPNType(Context context) {
int netType = -1;
ConnectivityManager connMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo == null) {
return netType;
}
int nType = networkInfo.getType();
if (nType == ConnectivityManager.TYPE_MOBILE) {
Log.e("networkInfo.getExtraInfo()",
"networkInfo.getExtraInfo() is "
+ networkInfo.getExtraInfo());
if (networkInfo.getExtraInfo().toLowerCase().equals("cmnet")) {
netType = CMNET;
} else {
netType = CMWAP;
}
} else if (nType == ConnectivityManager.TYPE_WIFI) {
netType = WIFI;
}
return netType;
}
/**
* 獲取Ip 地址
*
* @return
*/
public static String getLocalIpAddress() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface
.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf
.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
}
return null;
}
/**
* 判斷網路狀況
* @param context
* @return
*/
public static boolean isCheckNetAvailable(Context context) {
boolean isCheckNet = false;
try {
final ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo mobNetInfoActivity = connectivityManager
.getActiveNetworkInfo();
if (mobNetInfoActivity == null || !mobNetInfoActivity.isAvailable()) {
isCheckNet = false;
return isCheckNet;
} else {
isCheckNet = true;
return isCheckNet;
}
} catch (Exception ex) {
ex.printStackTrace();
}
return isCheckNet;
}
public static boolean isCheckNetAvailable(Context context, int netType) {
boolean isAvaliable = false;
ConnectivityManager manager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = manager.getNetworkInfo(netType);
if (null != info && info.isConnected()) {
isAvaliable = true;
}else{
Toast.makeText(context, R.string.net_wrok_unconnetion_text, Toast.LENGTH_SHORT).show();
}
return isAvaliable;
}
/**
* 判斷網路是否可用
* @param context 上下文對象
* @return 可用返回true 不可用返回false
*/
public static boolean NetAvailable(Context context) {
if (!NetUtils.isCheckNetAvailable(context)) {
StringUtils.showToast(context, R.string.net_wrok_unconnetion_text);
return false;
}
return true;
}
}
Ⅷ android alertdialog 怎樣寫成工具類
在工具類的構造函數中添加一個Context的參數,並設置一個全局變數Context,這樣在某個Activity類中實例化這個工具類的時候就可以將Context對象傳過去了,希望對你有幫助!
Ⅸ 安卓手機有哪些逆天的工具類的app,分享一下唄
貓咪算不算