大佬教程收集整理的这篇文章主要介绍了android – OnCreate方法不断重复调用,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我仍然不明白这个错误,并希望能帮助确定根本原因.我最大的恐惧是不经意地重新介绍它.
我曾经见过最疯狂的错误.
OnCreate方法被一再调用,冻结了我的应用程序,并给了我轻微的闪烁.然后,唯一的解决方案是退出到主屏幕,强制从设置菜单退出应用程序.
这是正在发生的细节:
>申请开始(主要活动)
>主要活动调用第二个活动
> Second Activity调用onCreate,设置正常
>第二个活动随机决定退出创建 – 我认为这是发生了什么
> Second Activity的onCreate再次被调用.它不会回到主要活动.
我运行了@L_262_16@调试器,看来第二个活动成功完成了onComplete / onResume序列,然后决定退出并重启.
有没有人听说过这个行为?
我没有注意到抛出任何异常.此外,在调试过程中,我确实已经进行了检查,您所看到的那些位置是无声的. (这是较早的代码,然后我用print语句)
更新:当尝试停止该过程时,我必须打开飞行模式.这意味着它与这个代码块有关(Second Activity)
else if (Network.haveNetworkConnection(Login.getContext()) && Login.checkClientId()) {...}
码:
主要活动的onResume(),我称之为第二个活动:
@Override public void onResume() { super.onResume(); //check If logged in,else go to login page Login.setContext(getApplicationContext()); //Reset Notification number GCMIntentservice.cancelNotifications(); /** GO TO LOGIN **/ if(!Login.isLoggedIn()) { //If user is not logged in,open login page System.out.println("RESUMING MAIN AND STARTinG LOGIN INTENT"); Intent intent = new Intent(Activitymain.this,ActivityLogin.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } else { Login.setupstuffOnce(); Event.pullEvents(); //Get New Events //update ListView updateMainFeed(); } }
这是第二个活动:
public class ActivityLogin extends Activity { private String postData; //private Context c; //final Timer timer = new Timer(); //Facebook stuff private Facebook facebook = new Facebook(Config.FBAPPID); private AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook); //Layout stuff EditText username,password; Button loginButton,signupButton; @Override public void onCreate(Bundle savedInstanceStatE) { super.onCreate(savedInstanceStatE); // Open Database Login.setContext(getApplicationContext()); Database.open(getApplicationContext()); } /* * @Override public void onPause() { s } */ @Override public void onResume() { super.onResume(); // shouldn't put here but oh well init(); //If coming from ActivitySignup if(Transfer.username != null) { username.setText(Transfer.userName); password.setText(Transfer.password); Transfer.password = null; Transfer.username = null; loginButton.performClick(); } } public void init() { Login.getUserLoggedIn(); if (Login.isLoggedIn()) { //Do Any Additional Setup Login.setupstuffOnce(); // If user is logged in,open main Intent intent = new Intent(ActivityLogin.this,Activitymain.class); //intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } else if (Network.haveNetworkConnection(Login.getContext()) && Login.checkClientId()) { // Else,Make User Login // Inflate Login and Present Website String clientid = Login.getClientId(); System.out.println("clientid:" + clientid); //System.exit(0); postData = "mobile=1&client_id="+Login.getClientId(); // Inflate the view setContentView(R.layout.activitylogin3); username = (EditText) findViewById(R.id.userName); password = (EditText) findViewById(R.id.password); //Inflate the Button loginButton = (Button) findViewById(R.id.loginButton); signupButton = (Button) findViewById(R.id.signupButton); signupButton.setOnClickListener(new View.onClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(ActivityLogin.this,ActivitySignup.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOp); startActivity(intent); } }); loginButton.setOnClickListener(new View.onClickListener() { public void onClick(View view) { int res = Login.sendLogin(username.getText().toString(),password.getText().toString()); if(res == 202) { //Login successful //check if facebooked. if(Login.isFacebooked()) { //Just go to main Intent intent = new Intent(ActivityLogin.this,Activitymain.class); //Are these flags necessary? //intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } else { //Go to facebook login page //Intent intent = new Intent(ActivityLogin.this,ActivityFBLogin.class); //startActivity(intent); //Login via Facebook doFacebook(); } } else { System.out.println("Login Failed: "+res); if(res == 405) { Toast.makeText(getApplicationContext(),"Incorrect Username/password",Toast.LENGTH_SHORT).show(); password.setText(""); } else Toast.makeText(getApplicationContext(),"Network Error",Toast.LENGTH_SHORT).show(); //Not entirely true in all cases i think } /*Login.getUserLoggedIn(); if(Login.isLoggedIn()) { Intent intent = new Intent(ActivityLogin.this,Activitymain.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } else { Toast.makeText(getApplicationContext(),"Please Login Above",Toast.LENGTH_SHORT).show(); }*/ } }); } else { // Not Logged In and No Internet Access setContentView(R.layout.activitylogintext); Edit@R_122_3801@ = (EditText) findViewById(R.id.text); text.setText("No Internet Connection Detected\n requires internet to login"); Button button = (Button) findViewById(R.id.refreshButton); button.setOnClickListener(new View.onClickListener() { public void onClick(View view) { //Login.getUserLoggedIn(); if(Network.haveNetworkConnection(Login.getContext())) { Intent intent = new Intent(ActivityLogin.this,ActivityLogin.class); //intent.setFlags(); startActivity(intent); } else { Toast.makeText(getApplicationContext(),"No Internet Access Detected",Toast.LENGTH_SHORT).show(); } } }); } } @Override public void onActivityResult(int requestCode,int resultCode,Intent data) { super.onActivityResult(requestCode,resultCode,data); facebook.authorizeCallBACk(requestCode,data); } public void doFacebook() { facebook.authorize(this,Config.facebookPermissions,new DialogListener() { @Override public void onComplete(Bundle values) { /*SharedPreferences.Editor editor = state.edit(); editor.putString("access_token",facebook.getAccessToken()); editor.putLong("access_expires",facebook.getAccessExpires()); editor.commit(); */ //Input into database Login.saveAccessToken(facebook.getAccessToken()); Login.setFB(facebook.getAccessToken()); //Login.sendAccessToken(facebook.getAccessToken()); //Intent into Main Activity Intent intent = new Intent(ActivityLogin.this,Activitymain.class); //intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } @Override public void onFacebookError(FacebookError error) { Toast.makeText(getApplicationContext(),"Error: "+error.getErrorType(),Toast.LENGTH_SHORT).show(); } @Override public void onError(DialogError E) { Toast.makeText(getApplicationContext(),"Error: "+e.getmessage(),Toast.LENGTH_SHORT).show(); } @Override public void onCancel() {} }); } public Boolean checkForUserID(Context C) { try{ String res = Network.getUrl("www.website.com/mobile.PHP?got_user=1&client_id="+Login.getClientId()); JSONObject json = JSON.constructObject(res); if(JSON.handleCode(json)) { if(json.getString("type").equals("userid")) { Login.setLogin(json.getString("data")); return true; } } } catch(Exception E) { //Silent Fail } return false; } }
以上是大佬教程为你收集整理的android – OnCreate方法不断重复调用全部内容,希望文章能够帮你解决android – OnCreate方法不断重复调用所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。