splashscreen和第二次活动回来了

时间:2016-01-02 10:22:25

标签: java android android-activity

我正在使用Android工作室编写一个简单的应用程序,它打开主要活动,当我点击按钮时,它会产生新的意图,以便在网络浏览器中启动URL。打开URL的代码是:

String Link=listURL.get((int) id).toString();
                Uri uriUrl = Uri.parse(Link);
                Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
                startActivity(launchBrowser);

它运行正常,它显示了网页结果,我可以使用后退按钮返回主要活动。一切正常,直到我决定使用闪屏。 实现了一个启动画面后,当我点击web浏览器中的后退按钮时,它将退出应用程序。它不会再出现在" main"活性。

这是我的manifest.xml: 如果我尝试删除.splashscreen节,一切正常。我有启动画面,但一切正常。可能是清单的属性问题吗?

<?xml version="1.0" encoding="utf-8"?>

<uses-permission android:name="android.permission.INTERNET" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <activity
        android:name=".SplashScreen"
        android:theme="@android:style/Theme.Translucent"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".MyActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAINACTIVITY" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
</application>

这是我的启动画面:

public class SplashScreen extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

    Thread timerThread = new Thread(){
        public void run(){
            try{
                sleep(1000);
            }catch(InterruptedException e){
                e.printStackTrace();
            }finally{
                Intent intent = new Intent(SplashScreen.this,MyActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
            }
        }
    };
    timerThread.start();
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    finish();
}

}

感谢 乔瓦尼

4 个答案:

答案 0 :(得分:1)

执行语句后调用finish()导致启动MyActivity

 Intent intent = new Intent(SplashScreen.this,MyActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
 finish();

避免在onPause()中调用finish()。

答案 1 :(得分:1)

delete finish() from onpause and write your timer code inside onresume it will work
Ex: 
onresume()
{
 Thread timerThread = new Thread(){
        public void run(){
            try{
                sleep(1000);
            }catch(InterruptedException e){
                e.printStackTrace();
            }finally{
                Intent intent = new Intent(SplashScreen.this,MyActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
            }
        }
    };
    timerThread.start();
}

答案 2 :(得分:0)

我觉得它适合你

    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);

意图之后

finish();

答案 3 :(得分:0)

感谢您的建议,但没有解决。 我已经解决了使用另一个新的,而不是预定义的活动,一切正常。

乔瓦尼