java 适用于Android的简单LocalBinder演示
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 适用于Android的简单LocalBinder演示相关的知识,希望对你有一定的参考价值。
package se.hellsoft.simpleservicecallbackdemo;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
public class MyService extends Service {
private final LocalBinder mLocalBinder = new LocalBinder();
private Callback mCallback;
public class LocalBinder extends Binder {
public MyService getService() {
return MyService.this;
}
}
public interface Callback {
void onResult(String result);
}
@Override
public IBinder onBind(Intent intent) {
return mLocalBinder;
}
public void doSomeServiceJob() {
// TODO do stuff here...
if(mCallback != null) mCallback.onResult("result...");
}
@Override
public boolean onUnbind(Intent intent) {
mCallback = null;
return super.onUnbind(intent);
}
public void setCallback(Callback callback) {
mCallback = callback;
}
}
package se.hellsoft.simpleservicecallbackdemo;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
public class MyActivity extends Activity implements ServiceConnection, MyService.Callback, Handler.Callback {
private MyService mService;
public static final int CHANGE_BG_MSG = 1001;
private Handler mHandler;
private int mColor = Color.WHITE;
private boolean mSetBg = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
mHandler = new Handler(getMainLooper(), this);
}
@Override
protected void onStart() {
super.onStart();
bindService(new Intent(this, MyService.class), this, BIND_AUTO_CREATE);
mSetBg = true;
mHandler.sendEmptyMessageDelayed(CHANGE_BG_MSG, 1000);
}
@Override
protected void onStop() {
mService.setCallback(null);
unbindService(this);
mService = null;
mSetBg = false;
super.onStop();
}
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
mService = ((MyService.LocalBinder) iBinder).getService();
mService.setCallback(this);
}
@Override
public void onServiceDisconnected(ComponentName componentName) {
mService = null;
}
@Override
public void onResult(String result) {
// TODO Show result
}
@Override
public boolean handleMessage(Message message) {
if(message.what == CHANGE_BG_MSG && mSetBg) {
findViewById(R.id.watch_view_stub).setBackgroundColor(mColor);
mHandler.sendEmptyMessageDelayed(CHANGE_BG_MSG, 1000);
}
return true;
}
}
以上是关于java 适用于Android的简单LocalBinder演示的主要内容,如果未能解决你的问题,请参考以下文章
java 适用于Android Marshmallow的简单类。显示权限列表,并允许用户更改权限。这是为了实现而创建的
您如何获得适用于 Android 的简单相机程序?
适用于 Android 的 SSH Java 库? [关闭]
java 适用于Android ListView的简单字符串适配器,它具有一个过滤器,可以提供它找到的任何内容并忽略字边界
适用于 Android 的 3D 场景图工具包
java 适用于Android的领域数据库