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的领域数据库