編輯:關於Android編程
Android中很多地方都會用到Context,彈出Toast的時候需要、啟動活動時需要、發送廣播的時候也需要、操作數據庫的時候需要、使用通知的時候也需要等等等。
或許你現在還沒有為得不到Context而發愁,因為現在我們的很多操作都是在活動中進行的,而活動本身就是一個Context對象。但是,當應用程序的框架逐漸開始復雜起來的時候,很多的邏輯代碼都將脫離Activity類,但此時你又恰恰需要使用Context,也許這個時候你就會感到有些傷腦筋了。
舉個例子,這裡我們編寫了一個HttpUtil類,將一些通用的網絡操作封裝起來:
package org.lxh.demo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
public class HttpUtil {
public static void sendHttpRequest(final String address,final HttpCallbackListener listener){
new Thread(new Runnable() {
public void run() {
try {
HttpURLConnection connection=null;
URL url=new URL(address);
connection=(HttpURLConnection)url.openConnection();
connection.setRequestMethod(GET);
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
connection.setDoInput(true);
connection.setDoOutput(true);
InputStream inputStream=connection.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));
StringBuilder response=new StringBuilder();
String line;
while ((line=reader.readLine())!=null) {
response.append(line);
}
if(listener!=null){
listener.onFinish(response.toString());
}
} catch (Exception e) {
if(listener!=null){
listener.onError(e);
}
} finally{
if(connection!=null){
connection.disconnection();
}
}
}
}).start();
}
}
這裡可以使用sendHttpRequest()來發送Http請求,但是我假如我們想對sendHttpRequest()方法進行一些優化,當檢測到網絡不存在的時候就給用戶一個Toast提示,並不再執行後面的代碼。這裡卻讓我們遇到了一個問題,彈出的Toast提示需要一個Context參數,而我們在HttpUtil類中顯然是獲取不到Context對象的,怎麼辦呢?
其實這個問題經常會遇到,我們怎麼解決呢?這裡我們介紹一種技巧,讓你在項目的任何地方都能輕易的獲取到Context。Android提供了 一個Application類,以便於管理程序內一些全局的狀態信息,比如全局的Context。定制一個自己的Application,首先我們需要創建一個MyApplication類繼承自Application,如下:
package org.lxh.demo;
import android.app.Application;
import android.content.Context;
public class MyApplication extends Application {
private static Context context;
@Override
public void onCreate() {
context=getApplicationContext();
}
public static Context getContext(){
return context;
}
}
接下來我們需要告知系統,在程序啟動的時候應該初始化MyApplication 類,而不是默認的Application類,在AndroidManifest.xml文件中的標簽下進行指定:
android:name=org.lxh.demo.MyApplication
這樣以後在項目的任何地方使用Context,只需要調用一下MyApplication.getContext()就可以了:
Toast.makeText(MyApplication.getContext(),message,Toast.LENGTH_SHORT).show();
Android單片機與藍牙模塊通信實例代碼
啦啦畢業了,畢業前要寫畢業設計,需要寫一個簡單的藍牙APP進行交互,通過參考網上資料,問題順利搞定,下面小編把具體實現思路分享給大家,供大家參考。1、Android藍牙編
Android搖一搖振動效果Demo
前言 在微信剛流行的時候,在搖一搖還能用來那啥的時候,我也曾深更半夜的拿著手機晃一晃。當時想的最多的就是,我靠,為神馬搖一下需要用這麼大的力度,當時我想可能騰訊覺
Android開發學習之使用百度語音識別SDK實現語音識別(中)
今天我們來繼續學習百度語音識別SDK的相關內容,今天我們以百度語音識別SDK提供的API接口為前提,來實現自己的語音識別交互界面。在正式開始今天的文章之前,我們首先來了解
android中生成excel
都說程序員不爽產品經理,其實有的時候遇到一些奇葩的後台開發人員也會很不順心。最近項目有這樣一個要求,要生成一個excel然後發郵件給客戶。結果後台人員直接把這個功能扔給客