編輯:關於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();
啦啦畢業了,畢業前要寫畢業設計,需要寫一個簡單的藍牙APP進行交互,通過參考網上資料,問題順利搞定,下面小編把具體實現思路分享給大家,供大家參考。1、Android藍牙編
前言 在微信剛流行的時候,在搖一搖還能用來那啥的時候,我也曾深更半夜的拿著手機晃一晃。當時想的最多的就是,我靠,為神馬搖一下需要用這麼大的力度,當時我想可能騰訊覺
今天我們來繼續學習百度語音識別SDK的相關內容,今天我們以百度語音識別SDK提供的API接口為前提,來實現自己的語音識別交互界面。在正式開始今天的文章之前,我們首先來了解
都說程序員不爽產品經理,其實有的時候遇到一些奇葩的後台開發人員也會很不順心。最近項目有這樣一個要求,要生成一個excel然後發郵件給客戶。結果後台人員直接把這個功能扔給客