PDA

View Full Version : اجرای اکتیویتی فقط در اجرای اول



morahimi
جمعه 16 آبان 1393, 17:55 عصر
با سلام من میخوام وقتی برای اولین بار برنامه اجرا میشه یه اکتیویتی حاوی راهنمایی هایی باز بشه و پس از اونکه کاربر دکمه تایید را زد به صفحه اصلی برنامه هدایت شه و اون صفحه در اجراهای بعدی برنامه اجرا نشه چه کنم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟اگه ممکنه سورسشو برام بزارید ممنون

Amin-rz
جمعه 16 آبان 1393, 18:53 عصر
سلام.
از shared prefrence استفاده کن.

Sepehr M
جمعه 16 آبان 1393, 19:09 عصر
سلام
منم قبلا این مشکل رو داشتم...از دستور finish(); بعد از startactivity مورد نظر استفاده کن مشکلت حل میشه

dalmif
جمعه 16 آبان 1393, 19:25 عصر
از Share Prefences استفاده کن
هم آسون هم واقعا کاریه

mahdi2elve
دوشنبه 25 اسفند 1393, 13:24 عصر
سلام میشه بگین چجوری از
Share Prefences استفاده کنم. یا لااقل یه ادرسی بدین که سمپل داشته باشه

golbafan
دوشنبه 25 اسفند 1393, 13:47 عصر
سلام میتونید در یک فایل جانبی چک کنید
اولین بار که برنامه اجرا میشه این فایل وجود نداره
ولی دفعه بعد که اجرا بشه این فایل وجود داره و داخلش پارامتری ذخیره شده که نشوندهنده اینه که قبلا پیام خوش آمد گویی نشون دادین

milad2073
سه شنبه 13 مرداد 1394, 17:10 عصر
سلام
منم همین سوالو دارم, با این تفاوت که اگه برنامه جایگزین هم بشه بازم اکتیویتیم اجرا بشه.
با جایگزین کردن یرنامه
Share Prefences پاک نمیشه و همون اطلاعات قبلیش تووش میمونن.
اگه میشه کمک کنید, خیلی ممنون.

moham mad
سه شنبه 13 مرداد 1394, 20:55 عصر
prefs = PreferenceManager.getDefaultSharedPreferences(this );
key = prefs.getInt("key", 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("key", 1);
editor.commit();
if (key==0){
//your code



من کد بالا رو پیشنهاد میکنم ببینید جواب میده یا نه
اگه اشتباه هست لطفاً دوستان تصحیح کنند

Nevercom
سه شنبه 13 مرداد 1394, 21:29 عصر
توضیحاتی در این مورد در بلاگم داده بودم، شاید کمکتون کنه: http://nevercom.blog.ir/post/run-codes-on-activity-first-launch

milad2073
چهارشنبه 14 مرداد 1394, 10:45 صبح
دوستان خیلی ممنون از رهنمایتون
ولب فک کنم منظورمو بد رسوندم, من میخام متوجه بشم اولین باره که برنامه اجرا شده, چه بعد از نصب چه بعد از upgrade.
از روشی که شما لطف کردید و گفتید فقط میشه فهمید برنامه اولین باره که بعد از نصب داره اجرا میشه. ولی اگه برنامنه آپدیت بشه نمیشه فهمید

TheLoneWolf
چهارشنبه 14 مرداد 1394, 12:56 عصر
سلام

شما تو اکتیویتی که می خوایید فقط یک بار اجرا بشه چک کنید ببینید مثلا مقدار start در Sharedprefrence ذخیره شده یا نه اگه شده اکتیویتی بعدی رو باز کنه و اکتیویتی اول که می خوایید رو ببنده

اگه سیو نشده اکتیویتی اول رو نشون بده و توش اولین کاری که می کنه تو shared prefrece با کلمه start مقدار ذخیره می کنه

تئوریش اینطوریه حالا نمی دونم بتونید به کد تبدیل کنید یا نه

Nevercom
چهارشنبه 14 مرداد 1394, 15:12 عصر
خب تو هر بار آپدیت برنامه، اسم کلید رو عوض کنید

milad2073
چهارشنبه 14 مرداد 1394, 16:51 عصر
خیلی ممنوم دوستان
ایده هاتون جالبه

یکی از دوستان تکه کده جالبی معرفی کرد, گفتم شاید بخوایید ببینید.





SharedPreferences sh=getSharedPreferences("prefs", MODE_PRIVATE);
SharedPreferences.Editor editor=sh.edit();

long lastopen = sh.getLong("last_open", 0);
try {
if(getApplication().getPackageManager().getPackage Info("com.Milad.p11", PackageManager.GET_SIGNATURES).lastUpdateTime>lastopen){
// your code
}
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
editor.putLong("last_open", new Date().getTime());
editor.apply();

aminbir
شنبه 21 شهریور 1394, 10:20 صبح
اینم چند نمونه خدمت شما دوست عزیز

نمونه اول



SharedPreferences prefs = mContext.getSharedPreferences("appName", 0);
SharedPreferences.Editor editor = prefs.edit();
Intent intent;
if (prefs.getBoolean("isInitialAppLaunch", false))
{
intent = new Intent(this, activity_insert_password.class);
startActivity(intent);
}
else
{
//First Time App launched, you are putting isInitialAppLaunch to false and calling create password activity.
editor.putBoolean("isInitialAppLaunch", false);
intent = new Intent(this, activity_create_password.class);
startActivity(intent);
}


نمونه دوم
import android.content.Intent;

import android.content.SharedPreferences;

import android.os.Bundle;

public class check extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);

SharedPreferences settings=getSharedPreferences("prefs",0);
boolean firstRun=settings.getBoolean("firstRun",false);
if(firstRun==false)//if running for first time
//Splash will load for first time
{
SharedPreferences.Editor editor=settings.edit();
editor.putBoolean("firstRun",true);
editor.commit();
Intent i=new Intent(check.this,Splash.class);
startActivity(i);
finish();
}
else
{

Intent a=new Intent(check.this,Main.class);
startActivity(a);
finish();
}
}

}


نمونه سوم
SplashActivity(onResume):
@Override
public void onResume() {
super.onResume();
SharedPreferences settings = getSharedPreferences("prefs", 0);
boolean firstRun = settings.getBoolean("firstRun", true);
if (!firstRun) {
Intent intent = new Intent(this, RegistrationActivity.class);
startActivity(intent);
Log.d("TAG1", "firstRun(false): " + Boolean.valueOf(firstRun).toString());
} else {
Log.d("TAG1", "firstRun(true): " + Boolean.valueOf(firstRun).toString());
}
}



نمونه چهارم
SharedPreferences settings = getSharedPreferences("prefs", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("firstRun", true);
editor.commit();

Intent intent = new Intent(this, RegistrationActivity.class);
startActivity(intent);

امیدوارم تونسته باشم کمکی بکنم
موفق باشید

iran_sun99
شنبه 21 شهریور 1394, 11:24 صبح
سلام دوست عزیز
نظر من اینکه سعی کن یه جدول مخصوص اینکار داشته باشی چه برای اجرای اول و چه برای اپدیت برنامت سعی که با فیلدای جدول کار کنی
من نظر دوستان را رد نمیکنم اما برای من این تجربه پیش اومده که مقادیر null باشن یا مقداری غیر از اون مقدار مدنظرم گرفته باشه
بازم تصمیم با خودته