0

ジンジャーブレッドに minSdkVersion=10 を使用するアプリを開発しています。すべてのジンジャーブレッド デバイスで正常に動作していますが、4.0.3 エミュレーター (ICS) で実行しようとすると、常に停止します。調整が必要な設定はありますか?

これが私のマニフェストです

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.das"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="15" />

logcatのエラーはこれです

  02-22 15:03:40.217: E/global(514): Deprecated Thread methods are not supported.
02-22 15:03:40.217: E/global(514): java.lang.UnsupportedOperationException
02-22 15:03:40.217: E/global(514):  at java.lang.VMThread.stop(VMThread.java:85)
02-22 15:03:40.217: E/global(514):  at java.lang.Thread.stop(Thread.java:1280)
02-22 15:03:40.217: E/global(514):  at java.lang.Thread.stop(Thread.java:1247)
02-22 15:03:40.217: E/global(514):  at         com.example.SpelloGrande.splash$1.run(splash.java:48)

スプラッシュ アクティビティ

public class splash extends Activity {

//how long until we go to the next activity
protected int _splashTime = 3000; 

private Thread splashTread;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    final splash sPlashScreen = this; 

    // thread for displaying the SplashScreen
    splashTread = new Thread() {

        @Override
        public void run() {
            try {
                synchronized(this){

                        //duration
                        wait(_splashTime);

                }

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

                //start a new activity
                Intent i = new Intent();
                i.setClass(sPlashScreen, MainActivity.class);
                        startActivity(i);

                stop();
            }
        }
    };

    splashTread.start();
}

//Function that will handle the touch
@Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        synchronized(splashTread){
                splashTread.notifyAll();
        }
    }
    return true;
}

}
4

4 に答える 4

0

以下のコードを試してみてください。すべてのAndroidバージョンで機能します。

public class Act_Splashscreen extends Activity
{
    private int delay = 5000;

    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash_screen);

        try
        {

            Timer timer = new Timer();
            TimerTask task = new TimerTask() 
            {
                @Override
                public void run() 
                {
                    // TODO Auto-generated method stub

                    Intent intent = new Intent(Act_Splashscreen.this, newactivity.class);
                    startActivity(intent);
                    finish();
                }

            };

            timer.schedule(task, delay);
        } catch (Exception e) {
            // TODO: handle exception
        }
    }
}
于 2013-02-22T07:35:38.547 に答える
0

Android ではHandlerThreadおよびRunnables

Handler インスタンスを作成する

Handler handler = new Handler();

実行可能なスレッドを作成する

Runnable runnable = new Runnable() {

        @Override
        public void run() {
            Log.d("runnable started", "inside run");
            handler.removeCallbacks(runnable);
            handler.postDelayed(runnable, 1000);
        }
    };

そして、Handler を使用して Runnable を開始します

handler.postDelayed(runnable, 1000);

Runnableの使用を停止するには

handler.removeCallbacks(runnable);
于 2013-02-22T07:18:27.963 に答える
0

代わりに Runnable Thread を使用してみてください

  splashThread = new Thread(new runnable(){
        public void run(){


        //do your things here


        }
  });
  splashThread.start();

編集

stop(); を含める必要はありません。あなたのスレッドで。タスクが完了すると、スレッドは停止します。Thread.sleep(); を使用しない限り。

于 2013-02-22T07:21:42.043 に答える
0

4.0.3 では廃止されたが、2.3.3 では廃止されていないメソッドを使用しています。基本的に 2.3.3 には機能がありますが、4.0.3 にはありません。Splash の 48 行目にある関数が何であれ、削除する必要があるメソッドです。

于 2013-02-22T07:17:55.047 に答える