首先,我对 Android 和 JAVA 世界很陌生(来自 C/C++/Objective-C)。我正在尝试集成 Android Bump API(3.0,最新版本),但我遇到了麻烦。我复制了这个例子,它在Android 2.2下运行良好,bump服务正常启动,但对于Android 3.0及更高版本它不起作用。我在加载我的活动时遇到了一个异常(主线程上的网络),我知道这个异常以及如何避免它,但是在这种情况下,Bump 声明他们在自己的线程中运行他们的 API,所以我不真的知道我为什么得到它。他们说您不需要运行线程或任务。
这是我的活动示例
public class BumpActivity extends Activity {
private IBumpAPI api;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bump);
bindService(new Intent(IBumpAPI.class.getName()), connection,
Context.BIND_AUTO_CREATE);
IntentFilter filter = new IntentFilter();
filter.addAction(BumpAPIIntents.CHANNEL_CONFIRMED);
filter.addAction(BumpAPIIntents.DATA_RECEIVED);
filter.addAction(BumpAPIIntents.NOT_MATCHED);
filter.addAction(BumpAPIIntents.MATCHED);
filter.addAction(BumpAPIIntents.CONNECTED);
registerReceiver(receiver, filter);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
private final ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className, IBinder binder) {
Log.i("BumpTest", "onServiceConnected");
api = IBumpAPI.Stub.asInterface(binder);
try {
api.configure("API_KEY", "Bump User");
} catch (RemoteException e) {
Log.w("BumpTest", e);
}
Log.d("Bump Test", "Service connected");
}
@Override
public void onServiceDisconnected(ComponentName className) {
Log.d("Bump Test", "Service disconnected");
}
};
}
听起来问题发生在 api.configure 上的连接服务期间。我应该在单独的线程中运行它还是在它自己的 AsynchTask 中运行它,但是如何以及为什么?