2013-02-22 5 views
0

Je développe une application qui utilise minSdkVersion = 10 pour pain d'épice. il fonctionne bien sur tous les périphériques en pain d'épice mais quand j'essaye de l'exécuter sur l'émulateur 4.0.3 (ICS) il s'arrête toujours. Y a-t-il des paramètres que je dois ajuster?android 2.3.3 ne fonctionne pas sur android 4.0.3

ici est mon manifeste

<?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" /> 

et l'erreur sur logcat est ce

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) 

splash activité

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; 
} 

} 
+0

Poster splash.java:48 et le code entourant –

+0

double question: http://stackoverflow.com/q/8686861/620338 –

+0

vous y allez. J'ai vu sur mon code java la ligne 48 de mon splash est stop(); qui a une ligne à travers elle et dit 'La méthode stop() du type Thread est deprecated' – Jerome

Répondre

0

Vous utilisez une méthode qui est dépréciée dans la version 4.0. 3, mais pas en 2.3.3. Fondamentalement, 2.3.3 a la fonction mais pas 4.0.3. Quelle que soit la fonction qui est sur la ligne 48 dans Splash est la méthode que vous devez supprimer.

0

Dans Android est mieux d'utiliser Handler pour gérer la Thread et Runnables

Créer une instance gestionnaire

Handler handler = new Handler(); 

Créer un fil Runnable

Runnable runnable = new Runnable() { 

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

et démarrer le Runnable à l'aide Handler

handler.postDelayed(runnable, 1000); 

Et pour arrêter l'utilisation Runnable

handler.removeCallbacks(runnable); 
+0

J'ai essayé ce monsieur mais toujours pas de chance – Jerome

+0

Essayez ci-dessus chose que je viens de trouver. Et vérifie que si ça marche ou pas et fais moi savoir. ** Je viens de mettre à jour le logiciel Answare ** –

+0

Cette solution a-t-elle fonctionné ou non? –

0

Essayez utilisation Runnable fil à la place

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


     //do your things here 


     } 
    }); 
    splashThread.start(); 

EDIT

Vous ne devez pas inclure stop(); dans ton fil. Votre discussion s'arrêtera une fois les tâches terminées. Sauf si vous utilisez Thread.sleep();

+0

Merci à tous pour votre aide. Je suis déjà en mesure de l'exécuter sur ICS – Jerome

+0

vous êtes les bienvenus, essayez upvote ou acceptez l'une des réponses ci-dessus si elle vous a aidé. –

0

essayez ci-dessous le code, il fonctionne pour moi dans toutes les versions 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 
     } 
    } 
} 
Questions connexes