SDカードでファイルを開いています。誰かが SD カードをマウントすると、アプリケーションがクラッシュします。ACTION_MEDIA_EJECT ブロードキャスト イベントに登録しようとしていますが、それを受け取りましたが、遅すぎるようです。私がそれを取得するまでに、それはすでに私のアプリケーションをクラッシュさせています。アプリケーションがクラッシュする前に通知を受け取る方法はありますか?
非常に単純なサンプル コードを追加しました。これを行うと、USB (MSC モード) をオンにすると、サービスがクラッシュしてしまいます。
テスト.java
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
startService(new Intent(this, TestService.class));
bindService(new Intent(this, TestService.class), serviceConnection, Context.BIND_AUTO_CREATE);
} catch (Exception e) {
}
}
protected TestService testService;
private ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
TestService.LocalBinder binder = (TestService.LocalBinder) service;
testService = binder.getService();
}
@Override
public void onServiceDisconnected(ComponentName name) {
testService = null;
}
};
TestService.java
@Override
public void onCreate() {
super.onCreate();
try {
mFileOutputStream = new FileOutputStream("/sdcard/test2", true);
} catch (Exception e) {
}
}
@Override
public IBinder onBind(Intent intent) { return binder; }
public static class LocalBinder extends Binder {
public static TestService getService() {
return _this;
}
}