#android #android-studio #lag
#Android #android-studio #задержка
Вопрос:
Я не могу найти свои ошибки …… изучая социальный логин (Google, facebook), почти не знаю, что делать… Я старался изо всех сил, но не смог найти ошибок. Когда я подключаю свои устройства Android и запускаю их, мои устройства заклиниваются. Поэтому я должен принудительно завершить свое приложение.
вот мой код
androidmanifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.acepeter.smartcalendar">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
tools:replace="android:supportsRtl">
<activity android:name=".SignupActivity"/>
<activity android:name=".MainActivity"/>
<activity android:name=".SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".BaseActivity" />
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"
tools:replace="android:value" />
<activity
android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name" />
<activity
android:name="com.facebook.CustomTabActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="@string/fb_login_protocol_scheme" />
</intent-filter>
</activity>
<activity android:name=".LoginActivity"
android:windowSoftInputMode="stateHidden|adjustResize">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="@string/fb_login_protocol_scheme" />
</intent-filter>
</activity>
</application>
</manifest>
splashactivity.java
public class SplashActivity extends AppCompatActivity {
/*
앱이 맨처음 실행하면 띄어지는 로딩 화면
앱에서 필요한 네트워크 연결, 데이터베이스 연결
설정 값 적용 등의 앱에서 처음에 해야할 기능을 수행하기 위한 화면
앱 또는 서버 점검 알림창을 띄우는 화면
Remote Config(원격 구성)
서버에서 앱의 대한 설정을 해줄 수 있습니다.
설정 : 사용자가 사용하는 설정이 아닌 앱 관리자가 모든 앱의 설정을
관리하기 위한 기능
*/
FirebaseRemoteConfig remoteConfig;
LinearLayout container;
// @Override
// protected void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_logo);
// startLoading();
// mAuth = FirebaseAuth.getInstance();
// }
// private void startLoading() {
// Handler handler = new Handler();
// handler.postDelayed(new Runnable() {
// @Override
// public void run() {
// finish();
// }
// }, 2000);
//}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_logo);
container = findViewById(R.id.splash_layout_container);
// 전체 화면
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
startLoading();
remoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
.setMinimumFetchIntervalInSeconds(100)
.build();
remoteConfig.setConfigSettingsAsync(configSettings);
remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);
remoteConfig.fetchAndActivate()
.addOnCompleteListener(new OnCompleteListener<Boolean>() {
@Override
public void onComplete(@NonNull Task<Boolean> task) {
if (task.isSuccessful()) {
Log.i("RemoteConfig", "Remote Success");
} else {
Log.i("RemoteConfig", "Remote Failed");
}
displayMessage();
}
});
}
private void displayMessage() {
// 서버에 저장된 설정 값을 가져오도록 함.
String background = remoteConfig.getString(getString(R.string.theme_color));
boolean caps = remoteConfig.getBoolean("splash_message_caps");
String message = remoteConfig.getString("splash_message");
container.setBackgroundColor(Color.parseColor(background));
if(caps) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(message)
.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
builder.create().show();
}else {
// 다음 화면으로 넘어감
Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
startActivity(intent);
finish();
}
}
private void startLoading() {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
finish();
}
}, 2000);
}
}
Комментарии:
1. Вы должны переместить этот код либо в MainActivity, либо в какой-либо другой класс. Заставки не предназначены для выполнения такого объема работы, а только для отображения вашего бренда, инициализации отдельных элементов и т. Д. Причина, по которой ваше приложение зависает, заключается в том, что никакие действия не выполняются до тех пор, пока RemoteConfig не завершит выборку и активацию.
2. смотрите logcat и поделитесь ошибкой