androidcallback
1. android 在okhttp 中的callback中解析返回的對象為什麼是空的
public class StringParser implements Parser<String> {
@Override
public String parse(Response response) {
String result=null;
try {
result=response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
}
再實現一個將json轉化為實體類的。這個相對復雜一點,需要將實體類的Class對象傳入,因為我們使用的是gson,進行轉換的時候需要該參數。當然這個應該是對所有實體類通用的,很顯然的用到了泛型。
public class GsonParser<T> implements Parser<T> {
private Class<T> mClass=null;
public GsonParser(Class<T> clazz){
if (clazz==null){
throw new IllegalArgumentException("Class can't be null");
}
this.mClass=clazz;
}
@Override
public T parse(Response response) {
try {
Gson gson=new Gson();
String str=response.body().string();
T t=gson.fromJson(str,mClass);
return t;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
要在UI層進行更新UI,其實很簡單,解析完成後發生一個消息就好了,那麼要怎麼做呢。
首先實現Callback介面
public class Callback<T> implements com.squareup.okhttp.Callback {
private Parser<T> mParser;
public Callback(Parser<T> mParser) {
if (mParser == null) {
throw new IllegalArgumentException("Parser can't be null");
}
this.mParser = mParser;
}
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
}
}
2223
通過構造函數將我們的Parser傳遞了進去。
2. android handler和callback的區別,調用介面後用handler還是callback
1.試下用postDelayed(Runnable a, int time),因為post把消息放到Looper中就返回,但Looper中沒有其他消息又會被立刻取出來執行,這樣就有可能做了run中的操作,而沒有及時刷新按鈕. 2.另外,這種做法耗時操作仍然是由UI線程去做了。。而不是你想的另起了線程。。 建議最好用下面的方法: 定義一個線程。 class MyThread extends Thread{ Handler mHandler; Boolean boo; public MyThread(Handler handler){ mHandler = handler; } public void setBoo(boolean b) {boo = b; } publid void run(){ if(boo){ getWeatherInfo();//耗時操作 analyzing();//耗時操作 mHandler.post(new Runnable() { public void run() { setWeather();//更新UI } );//更新UI boo = true; } } } 在處理單擊事件時: sureButton.setOnClickListener(new Button.OnClickListener(){ public void onClick(View view){ setBoo(true); myThread.start(); } }); 在activity中: MyThread myThread = new MyThread(mHandler);
3. android問題callback報錯
先看一下源碼是否有這個參數的方法,然後看源碼的參數是啥,這邊在寫和源碼提供的方法一樣的參數,還有就是導包路徑
4. android 注冊callback 是否有效
回調介面在android中是支持的,android使用的是java語言,支持面向對象的三大特性,封裝、繼承、多態
5. android successcallback是什麼類型
這是回調函數的意思,可以這樣理解:
因為某些操作是用到非同步線程操作的。這樣的話在執行完非同步線程的操作之後想要讓UI刷新數據之類就需要用回調函數來傳遞。回調函數你可以理解為一個開關。你跟一個人在不同房間工作。你的工作必須在他的事情完成之後才能繼續。而你又不能到那個房間。這時你可以扔一個開關給他。當他做完事情之後。按一下開關。你知道了之後就可以開始操作
6. android camera callback回調 是不是通過binder
final void setErrorCallback(Camera.ErrorCallback cb):Camera發送錯誤的時候回調,可以在其中進行錯誤的後續處理。
final void setPreviedCallback(Camera.PreviewCallback cb):Camera預覽界面發生變化的時候回調,可以在其中獲取到Camera捕獲到的幀圖像。
FEATURE_CAMERA:設備是否有攝像頭。
FEATURE_CAMERA_ANY:設備至少有一個攝像頭。
FEATURE_CAMERA_AUTOFOCUS:設備支持的攝像頭是否支持自動對焦
FEATURE_CAMERA_FLASH:設備是否配備閃光燈。
FEATURE_CAMERA_FRONT:設備是否有一個前置攝像頭。
7. android 怎麼來傳遞非同步回調的值
PhoneGap的js回調有幾種實現方式。其中一種是ajax。
我們先來看一下js端相關代碼:
// file: lib/android/plugin/android/callback.js
define("cordova/plugin/android/callback", function(require, exports, mole) {
var port = null,
token = null,
xmlhttp;
function startXhr() {
// cordova/exec depends on this mole, so we can't require cordova/exec on the mole level.
var exec = require('cordova/exec'),
xmlhttp = new XMLHttpRequest();
// Callback function when XMLHttpRequest is ready
xmlhttp.onreadystatechange=function(){
if (!xmlhttp) {
return;
}
if (xmlhttp.readyState === 4){
// If callback has JavaScript statement to execute
if (xmlhttp.status === 200) {
// Need to url decode the response
var msg = decodeURIComponent(xmlhttp.responseText);
setTimeout(startXhr, 1);
exec.processMessages(msg);
}
// If callback ping (used to keep XHR request from timing out)
else if (xmlhttp.status === 404) {
setTimeout(startXhr, 10);
}
// 0 == Page is unloading.
// 400 == Bad request.
// 403 == invalid token.
// 503 == server stopped.
else {
console.log("JSCallback Error: Request failed with status " + xmlhttp.status);
exec.setNativeToJsBridgeMode(exec.nativeToJsModes.POLLING);
}
}
};
if (port === null) {
port = prompt("getPort", "gap_callbackServer:");
}
if (token === null) {
token = prompt("getToken", "gap_callbackServer:");
}
xmlhttp.open("GET", "http://127.0.0.1:"+port+"/"+token , true);
xmlhttp.send();
}
mole.exports = {
start: function() {
startXhr();
},
stop: function() {
if (xmlhttp) {
var tmp = xmlhttp;
xmlhttp = null;
tmp.abort();
}
},
isAvailable: function() {
return ("true" != prompt("usePolling", "gap_callbackServer:"));
}
};
});
8. Android的callback機制
你可以從MVC的角度去理解。比如M就是Model層,模型層,一般數據對象放在該層。C就是Control層,這一層一般就是Activity之類的。而V代表的就是View,界面層,一般是一些xml文件,通過解析映射到屏幕上。而callback就好比你點擊某個按鈕,那麼就會觸發callback。因此callback機制就好比MVC模式的一個實例。
9. 什麼是回調函數 android
class A implements Camera.PreviewCallback{
/**
* 預覽幀回調函數
*
*/
public void onPreviewFrame(byte[] data, Camera camera) {
//當視頻流開啟的時候就可以在這個方法里做你想做的事,那麼這個就是一個回調函數
}
}
10. 誰知道android編程的callback是什麼意思如何理解裡面重寫的方法
callback 就是把一個函數傳到另外一個函數,讓對方可以叫回來。