我有一个Splash活动,其中通过意图我希望将用户重定向到不同的类,具体取决于它是否是第一次访问该应用程序。
除非真的很慢,否则会崩溃
public class MainActivity extends Activity {
private long splashDelay = 1500;
int counter;
SharedPreferences app_preferences;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
app_preferences = PreferenceManager.getDefaultSharedPreferences(this);
counter = app_preferences.getInt("counter", 1);
System.out.println("count is..." +counter);
TimerTask task = new TimerTask() {
@Override
public void run() {
finish();
if(counter==1){
Intent in = new Intent(MainActivity.this, Attempt.class);
startActivity(in);
}
else{
Intent intent = new Intent().setClass(MainActivity.this, MainPage.class);
startActivity(intent);
}
SharedPreferences.Editor editor = app_preferences.edit();
editor.putInt("counter", +(counter+1));
editor.commit();
}
};
Timer timer = new Timer();
timer.schedule(task, splashDelay);
}
}
基本上logcat一直在继续,红色波浪的顶部表示“执行停止未恢复的活动:{yo.laststage / yo.laststage.MainPage}”
答案 0 :(得分:0)
我编码过多,简化了这一切。 如果有人感兴趣,我想要实现的是在MainActivity.class中有一个SPLASH页面,并检查它是否是第一次运行应用程序。 如果是,则应用程序会自动重定向到One.Class ELSE(又名它不是第一次),它会自动重定向到Two.Class。
不要忘记在Manifest中宣布您的活动
MainActivity.class:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Thread timerThread = new Thread(){
public void run(){
try{
sleep(3000);
}catch(InterruptedException e){
e.printStackTrace();
}finally{
Boolean isFirstRun = getSharedPreferences("PREFERENCES", MODE_PRIVATE).getBoolean("isfirstrun", true);
if (isFirstRun){
Intent intent = new Intent(MainActivity.this, One.class);
startActivity(intent);
getSharedPreferences("PREFERENCES", MODE_PRIVATE).edit().putBoolean("isfirstrun", false).commit();
}
else{
Intent intent = new Intent(MainActivity.this,Two.class);
startActivity(intent);
}
}
}
};
timerThread.start();
}
@Override
protected void onPause() {
super.onPause();
finish();
}
}