Android Lint使IntentService构造函数私有
如果我使用模板Android Lint使IntentService构造函数私有,android,lint,Android,Lint,如果我使用模板 public class EditProfileIntentService extends IntentService { private static final String USENAME = "username"; private static final String LASTNAME = "lastname"; private static final String PHONE = "phone"; private static final Strin
public class EditProfileIntentService extends IntentService {
private static final String USENAME = "username";
private static final String LASTNAME = "lastname";
private static final String PHONE = "phone";
private static final String EMAIL = "email";
private Handler handler;
private Context mContext;
public EditProfileIntentService() {
super("EditProfileIntentService");
}
public static void edit(Context context, String username, String lastname, String email,
String phone) {
Intent intent = new Intent(context, EditProfileIntentService.class);
intent.putExtra(USENAME, username);
intent.putExtra(LASTNAME, lastname);
intent.putExtra(EMAIL, email);
intent.putExtra(PHONE, phone);
context.startService(intent);
}
@Override public int onStartCommand(Intent intent, int flags, int startId) {
handler = new Handler();
mContext = this;
return super.onStartCommand(intent, flags, startId);
}
@Override protected void onHandleIntent(Intent intent) {
if (intent != null) {
final String username = intent.getStringExtra(USENAME);
final String lastname = intent.getStringExtra(LASTNAME);
final String email = intent.getStringExtra(EMAIL);
final String phone = intent.getStringExtra(PHONE);
try {
final ResponseContainer container =
RestClient.get().editProfile(Token.getToken(this), username, lastname, phone, email);
if (container.getSucess().equals(1)) {
ProfileEntity profileEntity = Token.getProfile(this);
profileEntity.setEmail(email);
profileEntity.setPhone(phone);
profileEntity.setUsername(username);
profileEntity.setLastname(lastname);
Token.saveProfile(this, profileEntity);
handler.post(new Runnable() {
@Override public void run() {
Toast.makeText(mContext, R.string.edit_profile_success, Toast.LENGTH_SHORT).show();
}
});
} else {
handler.post(new Runnable() {
@Override public void run() {
Toast.makeText(mContext, container.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
} catch (RetrofitError e) {
handler.post(new Runnable() {
@Override public void run() {
Toast.makeText(mContext, R.string.auth_rg_network_error, Toast.LENGTH_SHORT).show();
}
});
}
EventBus.getDefault().postSticky(new FinishProfileEdit());
}
}
}
然后lint建议将构造函数设为私有,这将使服务不可接受并抛出
java.lang.RuntimeException: Unable to instantiate service ua.in.femid.controller.services.EditProfileIntentService: java.lang.IllegalAccessException: access to constructor not allowed
是虫子吗?如何使lint从不建议将强制公共领域设置为受保护或私有领域
编辑该服务仅通过方法EDIT
编辑2
将初始化器从构造函数移动到onStartCommand,lint仍然希望使构造函数私有化
编辑3
Lint建议为那些IntentService创建私有构造函数,该构造函数遵循android studio模板,并使用静态方法将参数设置为bandle并调用startService,就像我在edit method中所做的那样很抱歉。我在考虑常规的
服务时被搞糊涂了。您确定要扩展IntentService
?@MikeM。是的,我更新了话题。是的,你说了三遍,但我就是没听懂。我的错。那我猜是皮棉里的虫子。不知道,很抱歉。我在考虑常规的服务时被搞糊涂了。您确定要扩展IntentService
?@MikeM。是的,我更新了话题。是的,你说了三遍,但我就是没听懂。我的错。那我猜是皮棉里的虫子。不知道