Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android中较低版本的应用程序未在较高版本中运行_Java_Android_Debugging_Android 2.2 Froyo - Fatal编程技术网

Java android中较低版本的应用程序未在较高版本中运行

Java android中较低版本的应用程序未在较高版本中运行,java,android,debugging,android-2.2-froyo,Java,Android,Debugging,Android 2.2 Froyo,我已经使用android SDK 2.2版本制作了我的应用程序,现在当我在android SDK 4.0.3上运行我的应用程序时,它没有运行 我已经在清单文件中给出了最小和最大sdk 我是android新手,希望能在更低版本和更高版本上运行我的应用程序。谁能告诉我怎么做。感谢您的帮助 飞溅类代码 package com.Cricket_trivia.in; import android.app.Activity; import android.content.Intent; import an

我已经使用android SDK 2.2版本制作了我的应用程序,现在当我在android SDK 4.0.3上运行我的应用程序时,它没有运行

我已经在清单文件中给出了最小和最大sdk

我是android新手,希望能在更低版本和更高版本上运行我的应用程序。谁能告诉我怎么做。感谢您的帮助

飞溅类代码

package com.Cricket_trivia.in;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.MotionEvent;

public class SplashScreen extends Activity {

    protected int _splashTime = 5000; 

    private Thread splashTread;

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


        final SplashScreen sPlashScreen = this; 

        // thread for displaying the SplashScreen
        splashTread = new Thread() {
            @Override
            public void run() {
                try {                   
                    synchronized(this){
                        wait(_splashTime);
                    }

                } catch(InterruptedException e) {} 
                finally {
                    finish();

                    Intent i = new Intent();
                    i.setClass(sPlashScreen, K_trivia_cricketActivity.class);
                    startActivity(i);

                    stop();
                }
            }
        };

        splashTread.start();
    }
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            synchronized(splashTread){
                splashTread.notifyAll();
            }
        }
        return true;
    }

}
编辑:我的日志

    06-07 10:24:18.710: I/dalvikvm(1461): threadid=3: reacting to signal 3
    06-07 10:24:18.760: I/dalvikvm(1461): Wrote stack traces to '/data/anr/traces.txt'
    06-07 10:24:18.890: D/dalvikvm(1461): GC_FOR_ALLOC freed 45K, 4% free 6541K/6787K, paused 74ms
    06-07 10:24:18.900: I/dalvikvm-heap(1461): Grow heap (frag case) to 7.333MB for 921616-byte allocation
    06-07 10:24:19.010: I/dalvikvm(1461): threadid=3: reacting to signal 3
    06-07 10:24:19.100: I/dalvikvm(1461): Wrote stack traces to '/data/anr/traces.txt'
    06-07 10:24:19.140: D/dalvikvm(1461): GC_CONCURRENT freed <1K, 5% free 7440K/7751K, paused 5ms+5ms
    06-07 10:24:19.240: D/dalvikvm(1461): GC_FOR_ALLOC freed 0K, 5% free 7440K/7751K, paused 97ms
    06-07 10:24:19.240: I/dalvikvm-heap(1461): Grow heap (frag case) to 7.723MB for 409936-byte allocation
    06-07 10:24:19.320: D/dalvikvm(1461): GC_FOR_ALLOC freed 0K, 5% free 7841K/8199K, paused 61ms
    06-07 10:24:19.589: D/gralloc_goldfish(1461): Emulator without GPU emulation detected.
    06-07 10:24:19.669: I/dalvikvm(1461): threadid=3: reacting to signal 3
    06-07 10:24:19.779: I/dalvikvm(1461): Wrote stack traces to '/data/anr/traces.txt'
    06-07 10:24:24.600: W/dalvikvm(1461): threadid=11: thread exiting with uncaught exception (group=0x409c01f8)
    06-07 10:24:24.600: E/AndroidRuntime(1461): FATAL EXCEPTION: Thread-78
    06-07 10:24:24.600: E/AndroidRuntime(1461): java.lang.UnsupportedOperationException
    06-07 10:24:24.600: E/AndroidRuntime(1461):     at java.lang.Thread.stop(Thread.java:1076)
    06-07 10:24:24.600: E/AndroidRuntime(1461):     at java.lang.Thread.stop(Thread.java:1063)
    06-07 10:24:24.600: E/AndroidRuntime(1461):     at com.Cricket_trivia.in.SplashScreen$1.run(SplashScreen.java:40)
    06-07 10:24:26.209: D/dalvikvm(1461): GC_FOR_ALLOC freed 1037K, 15% free 7022K/8199K, paused 62ms
    06-07 10:24:26.209: I/dalvikvm-heap(1461): Grow heap (frag case) to 7.509MB for 614416-byte allocation
    06-07 10:24:26.440: D/dalvikvm(1461): GC_CONCURRENT freed <1K, 8% free 7621K/8199K, paused 4ms+5ms
    06-07 10:24:26.610: I/dalvikvm(1461): threadid=3: reacting to signal 3
    06-07 10:24:26.640: I/dalvikvm(1461): Wrote stack traces to '/data/anr/traces.txt'
06-07 10:24:18.710:I/dalvikvm(1461):threadid=3:对信号3作出反应
06-07 10:24:18.760:I/dalvikvm(1461):将堆栈跟踪写入“/data/anr/traces.txt”
06-07 10:24:18.890:D/dalvikvm(1461):释放45K的所有物质的总含量,4%释放6541K/6787K,暂停74ms
06-07 10:24:18.900:I/dalvikvm堆(1461):为921616字节分配将堆(frag大小写)增长到7.333MB
06-07 10:24:19.010:I/dalvikvm(1461):线程ID=3:对信号3作出反应
06-07 10:24:19.100:I/dalvikvm(1461):将堆栈跟踪写入“/data/anr/traces.txt”

06-07 10:24:19.140:D/dalvikvm(1461):GC_CONCURRENT freed你的应用程序在4.0.3而不是2.2上崩溃的原因很可能是因为你在UI线程上执行了一个昂贵的操作。以前版本的Android(即ICS之前的版本)不在乎您何时这样做,让您的应用程序按原样运行。但是,在4.0及更高版本中,如果您在UI线程上执行了可能代价高昂的操作(如网络连接等),操作系统会对此进行检查,并使您的应用程序崩溃

你基本上没有提供任何关于你的问题是什么的信息,所以我只能帮你解决这些问题


编辑: 这样行吗

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

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        Intent i = new Intent();
        i.setClass(sPlashScreen, K_trivia_cricketActivity.class);
        startActivity(i);
    }
    return true;
}

不要使用线程,因为这会在更高版本中产生问题。使用下面的代码显示启动屏幕

   package com.Cricket_trivia.in;



import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.MotionEvent;

public class SplashScreen extends Activity {

    protected int _splashTime = 5000; 

    private Thread splashTread;
    MyCount counter = new MyCount(4000, 4000);
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        counter.start();
    }
     public class MyCount extends CountDownTimer
     {
         public MyCount(long csecond, long countDownInterval) 
         {
              super(csecond, countDownInterval);
         }

        @Override
        public void onFinish() {
            finish();
            Intent intent = new Intent();
            intent.setClass(SplashScreen.this, K_trivia_cricketActivity.class);
            startActivity(intent);

        }

        @Override
        public void onTick(long arg0) {
            // TODO Auto-generated method stub

        }
}
}


 I think it will work for you

“它不跑了”不会让它停下来。张贴日志。请解释“它没有运行”是什么意思。你看到启动器图标了吗?当你按下它时会发生什么事吗?logcat中是否有任何错误消息?您是否正在尝试建立任何网络连接?你的应用程序是否处理线程/异步任务?@AlexLockwood我已经使用线程在应用程序加载时显示启动屏幕从manifast删除android:targetSdkVersion=“integer”,然后重试可能会工作…我的日志猫当我在4.0.3版本中运行我的应用程序时,你需要向我们提供一些代码。从你发布的日志中没有什么可以告诉你的。解决方法是将你的
活动
中的
线程一起去掉。它们对于您正在尝试做的事情是不必要的。执行
onTouchEvent()
时,只需调用
startActivity()
。在调用
startActivity()
之前调用
finish()
也没有多大意义。据我所知,您可能不想让您的代码调用
finish()
。@师傅,我觉得这完全是一个黑客行为。你应该理解你的代码是如何工作的,而不是仅仅因为它没有崩溃就假设它工作正常。为什么你一开始就需要线程/定时器?@AlexLockwood在完成这项工作后,应用程序在更高版本中运行良好,我不知道我们是否应该在splash中使用定时器/线程。你能解释一下为什么选择使用定时器/线程吗?你的应用程序没有崩溃并不意味着你做错了。就我所知,上面的代码相当于使用
sleep(4000)
来避免比赛条件……这对那些稍后回到这个问题寻求类似问题答案的人来说是公平的。我强烈不同意这个答案,即使它对OP有效。很抱歉,如果它导致-2分,但我不希望人们在他们的应用程序中做类似的事情,认为这是正确的答案。我高估了你的几个顶级答案。。。我希望这能弥补它:)。