まず第一に、私は Android と Java の世界にまったく慣れていません (C/C++/Objective-C から来ました)。Android バンプ API (3.0、最新バージョン) を統合しようとしていますが、問題が発生しています。例をコピーしました。Android 2.2 では正常に動作し、バンプ サービスは正しく起動されますが、Android 3.0 以降では動作しません。アクティビティをロードするときに例外 (メイン スレッド 1 のネットワーク) が発生しました。この例外とそれを回避する方法はわかっていますが、この場合、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 で実行する必要がありますが、その方法と理由は何ですか?