如题.
下面的代码中,需要用到一个Binder作为方法的参数。
执行bindService(intent, connection, Context.BIND_AUTO_CREATE);时,
会调用musicBinder = (BGMusicService.MusicBinder)service; 异步绑定Binder。
那么如何在执行webView.addJavascriptInterface(new JsInterface(DetailMusicActivity.this, musicBinder), "music");传递该Binder时,确保这个Binder不为空呢?
private BGMusicService.MusicBinder musicBinder;
private ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
musicBinder = (BGMusicService.MusicBinder)service;
Log.d("BINDSERVICE", "-------------1bind------------");
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
};
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail_music);
Toolbar toolbar = (Toolbar) findViewById(R.id.detail_music_toolbar);
toolbar.setTitle(null);
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null){
actionBar.setDisplayHomeAsUpEnabled(true);
}
TextView textView = (TextView)findViewById(R.id.detail_music_title);
textView.setText(getIntent().getStringExtra("title"));
textView.setTextColor(Color.BLACK);
Intent intent = new Intent(DetailMusicActivity.this, BGMusicService.class);
startService(intent);
bindService(intent, connection, Context.BIND_AUTO_CREATE);
webView = (WebView)findViewById(R.id.detail_music_webview);
webView.addJavascriptInterface(new JsInterface(DetailMusicActivity.this, musicBinder), "music");
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (getIntent().getIntExtra("tag", 0) == ItemData.CONTENT_MUSIC){
webView.loadUrl(getJsFromFile("Javascript/remove"));
webView.loadUrl("javascript:remove()");
}else if (getIntent().getIntExtra("tag", 0) == ItemData.CONTENT_FM){View.loadUrl(getJsFromFile("Javascript/removeAll"));
webView.loadUrl("javascript:removeAll()");
}
}
});
webView.setWebChromeClient(new WebChromeClient());
webView.loadUrl(getIntent().getStringExtra("url"));
}