Java 是否停止未恢复的活动?

Java 是否停止未恢复的活动?,java,android,android-activity,Java,Android,Android Activity,我正在制作一个简单的Android应用程序,只是为了熟悉这个概念。我有一个有两个活动的应用程序,第一个应该只是一个闪屏,显示一秒钟,第二个是画布,有一个黑色方块,当你点击它时会变成青色。当我运行它时,它会在日志中显示一个错误“正在停止未恢复的活动” 主要活动: package com.example.test; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.Actio

我正在制作一个简单的Android应用程序,只是为了熟悉这个概念。我有一个有两个活动的应用程序,第一个应该只是一个闪屏,显示一秒钟,第二个是画布,有一个黑色方块,当你点击它时会变成青色。当我运行它时,它会在日志中显示一个错误“正在停止未恢复的活动”

主要活动:

package com.example.test;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        try{
        Thread.sleep(1000);
        }catch(Exception e){}
        Intent in = new Intent(this, Afspl.class);
        startActivity(in);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
package com.example.test;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;

public class Afspl extends Activity {

    public DrawView vi;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        vi = new DrawView(this);
    }

    class DrawView extends View{
        Paint paint = new Paint();

        public DrawView(Context context){
            super(context);
        }

        public void onDraw(Canvas c){
            paint.setColor(col);
            c.drawRect(40, 40, 200, 200, paint);

        }

        private int col = Color.BLACK;

        public void setToColor(int c){
            col=c;
        }
    }

    public boolean onTouchEvent(MotionEvent me){
        if(me.getX()>=30 &&  me.getX() <= 320 && me.getY() >=30 && me.getY() <= 320)vi.setToColor(Color.CYAN);
        return super.onTouchEvent(me);
    }


}
下一项活动:

package com.example.test;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        try{
        Thread.sleep(1000);
        }catch(Exception e){}
        Intent in = new Intent(this, Afspl.class);
        startActivity(in);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
package com.example.test;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;

public class Afspl extends Activity {

    public DrawView vi;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        vi = new DrawView(this);
    }

    class DrawView extends View{
        Paint paint = new Paint();

        public DrawView(Context context){
            super(context);
        }

        public void onDraw(Canvas c){
            paint.setColor(col);
            c.drawRect(40, 40, 200, 200, paint);

        }

        private int col = Color.BLACK;

        public void setToColor(int c){
            col=c;
        }
    }

    public boolean onTouchEvent(MotionEvent me){
        if(me.getX()>=30 &&  me.getX() <= 320 && me.getY() >=30 && me.getY() <= 320)vi.setToColor(Color.CYAN);
        return super.onTouchEvent(me);
    }


}
package com.example.test;
导入android.app.Activity;
导入android.content.Context;
导入android.graphics.Canvas;
导入android.graphics.Color;
导入android.graphics.Paint;
导入android.os.Bundle;
导入android.view.MotionEvent;
导入android.view.view;
公共类Afspl扩展活动{
公众视野六;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
vi=新的DrawView(本);
}
类DrawView扩展了视图{
油漆=新油漆();
公共绘图视图(上下文){
超级(上下文);
}
公共空白onDraw(画布c){
油漆。设置颜色(col);
c、 drawRect(40,40,200,200,油漆);
}
private int col=Color.BLACK;
公共无效设置颜色(int c){
col=c;
}
}
公共事件(MotionEvent me){
如果(me.getX()>=30&&me.getX()=30&&me.getY()而不是使用:

try{
    Thread.sleep(1000);
}catch(Exception e){}
Intent in = new Intent(this, Afspl.class);
startActivity(in);
你可以试着用新的

new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent in = new Intent(getApplicationContext(), Afspl.class);
                startActivity(in);
            }
}, 1000);
你永远不应该让主线程处于休眠状态。如果你想在将来做某事,请使用a和a


此外,您应该在两个活动上声明一个视图,而不仅仅是第一个活动。创建一个视图并在第二个活动上使用“setContentView()”将其设置。

线程试图停止时处于休眠状态(因为您在等待时调用了startActivity)。您正在尝试停止它,但它当前未处于恢复状态。如果我使用的处理程序将运行函数放入可运行类中,我如何引用该处理程序所在的MainActivity类,因为“this”将引用可运行类?如果您正在学习,请切换方法,而不要启动屏幕。他们是反Android用户讨厌他们。你希望在网页上看到一个闪屏吗?当你点击一个网页,他们向你显示你必须通过的广告对话框,然后你才能使用该网页时会发生什么?糟透了,不是吗?我想确保我了解如何在活动之间切换,对于我正在制作的应用程序,这似乎是一个好主意。像这样,“这”我说n Intent构造函数将是可运行的,而不是MainActivity。如何改为引用MainActivity?@user2649681使用MainActivity,而不是使用它。this@user2649681这将是主活动,而不是可运行的。你试过代码了吗?现在应用程序可以启动,但没有错误,但我只是得到一个空白的灰色屏幕,这是我预期的主活动,但另一个活动从未加载,我无法在日志中设置egl_swap_行为。你知道这是什么吗?@Storo Intent不将Runnable作为参数。