初学,不知道是不是还有其他方法。
MainActivity.java
package com.example.aphero.myinterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements Myinterface.Callback {
private TextView bitTextview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bitTextview= (TextView) findViewById(R.id.bitTextview);
Myinterface myinterface = new Myinterface();
myinterface.setCallback(this);
}
@Override
public void OnUpdate(int bit) {
bitTextview.setText("aphero:"+bit);
}
}
MyInterface.java
package com.example.aphero.myinterface;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.util.Log;
/**
* Created by aphero on 17-5-23.
* 内部类实现接口,必须传递接口的实现,即MainActivity实现了Myinterface.Callback,
* 所以必须将MainActivity.this传递给Callback mCallback
*/
public class Myinterface {
private final static String TAG="Myinterface";
private final Handler mMainHandler;
private final Handler mHandler;
private Callback mCallback;
private int count=0;
public interface Callback{
public void OnUpdate(int bit);
}
public Myinterface() {
HandlerThread thread = new HandlerThread("myinterface");
thread.start();
mHandler = new Handler(thread.getLooper());
mMainHandler = new Handler(Looper.getMainLooper());
mHandler.post(handlerpost);
}
public void setCallback(Callback mCallback){
this.mCallback = mCallback;
}
private void postUpdate(final int bit){
mMainHandler.post(new Runnable() {
@Override
public void run() {
if (mCallback!=null) mCallback.OnUpdate(bit);
else Log.i(TAG,"mCallback is null");
}
});
}
private Runnable handlerpost = new Runnable() {
@Override
public void run() {
postUpdate(count++);
mHandler.postDelayed(handlerpost,1000);
}
};
}